PAINEL ESTRATÉGICO & AUDITORIA · Gestão dos Projetos de Jogos, Nuvem & Segurança

Auditoria Técnica, Segurança & Roadmap de Evolução

Central de controle e documentação de melhorias para o cluster multi-VPS do Ragnarok dos Amigos, o ecossistema banzak.party e a ROM decompilada Pokémon FireRed ATB.

Status do Cluster: Consultando Oracle Cloud...
Jogadores Online: -
Contas / Chars: - / -
Daemons Ativos: -
Backup Offsite: Sincronizado (Map VPS)
🛡️
5/5 Concluídos
Auditoria de Segurança
100% Hardening Concluído
🇧🇷
3 Frentes
Tradução PT-BR (LATAM)
rAthena, NPCs & Cliente bRO
⚔️
6 Features
Ragnarok QoL & Ferramentas
Launcher GUI, Bot, Backup, Attendance
🎮
v0.4.0 Concluído
Pokémon FireRed ATB
Multi-Ball Selector & Troca em Campo

Auditoria de Segurança & Hardening Cloud Multi-VPS

Análise de riscos do cluster Oracle Cloud (`157.151.181.22` Core e `129.213.62.7` Map), do banco MariaDB e das APIs HTTP.

✅ RESOLVIDO MariaDB / `login.user_pass`

Hash Criptográfico de Senhas Ativo (MD5)

Todas as senhas dos jogadores e administradores no banco de dados MariaDB foram convertidas para hashes de 32 caracteres. O login-server do rAthena foi configurado com use_MD5_passwords: yes e o portal web agora aplica hash automático no login, cadastro e troca de senhas.

Status de Implementação:

100% das senhas armazenadas de forma segura em hash. Zero senhas em texto puro no banco.

✅ RESOLVIDO Portal Server / Secret Key Fallback

Geração Efêmera Criptográfica de Chave Secreta

Removido o fallback fixo dev-secret-change-in-prod. Caso o arquivo de configuração não exista ou falhe na leitura, o servidor gera automaticamente uma chave aleatória criptograficamente segura via secrets.token_hex(32).

Status de Implementação:

Impossível forjar tokens JWT administrativos através de segredos previsíveis.

✅ RESOLVIDO Cloud Backups / Multi-VPS Offsite Replica

Backup Diário com Replicação Offsite Automática

O script de backup (/usr/local/sbin/ragnarok-backup) gera dumps diários no Core VPS, valida integridade com gzip -t e sha256sum, e replica automaticamente via rsync sobre túnel seguro (chave ED25519) para o Map VPS (10.10.0.222:/home/ubuntu/backups_replica). Suporta também upload opcional para OCI Object Storage via rclone.

Status de Implementação:

Tolerância total a desastres com retenção de 14 dias em dois hosts físicos distintos da Oracle Cloud.

✅ RESOLVIDO Nginx & API / Rate Limiting

Rate Limiting Ativo em Camadas (Nginx Edge + Python Core)

Proteção dupla contra ataques de força bruta e DoS: o Nginx limita requisições com zone=auth_limit:10m rate=10r/m e o portal_server.py monitora tentativas por IP em memória, bloqueando abusos com HTTP 429 / 503.

Status de Implementação:

Endpoints /api/auth/login, /api/public/register e /api/public/change-password protegidos.

✅ RESOLVIDO HTTP Security Headers

Headers de Segurança HTTP Ativos nos Domínios Oficiais

Tanto banzak.party quanto rag.banzak.party agora respondem com cabeçalhos de proteção avançada contra clickjacking, MIME-sniffing e vazamento de referrers.

Headers Ativos: X-Content-Type-Options: nosniff | X-Frame-Options: SAMEORIGIN | Referrer-Policy: strict-origin-when-cross-origin

Melhorias, Ferramentas & Quality-of-Life para o Servidor

Recursos para elevar a experiência dos amigos ao nível de servidor comercial, com estabilidade e facilidade.

✅ IMPLEMENTADO & PRONTO

1. Launcher Gráfico Moderno (WPF & Python)

Desenvolvido launcher oficial com interface gráfica moderna Dark Mode, eliminando janelas de console e problemas com políticas de execução:

  • Launcher WPF (PowerShell nativo): client-custom/Launcher-GUI.ps1 executa nativamente no Windows 10/11 sem instalar nenhum software extra.
  • Launcher Python / PyInstaller: client-custom/launcher_gui.py multiplataforma com Tkinter.
  • Recursos Ativos: Status do cluster em tempo real (/api/public/status), barra de progresso visual de verificação SHA-256 e atalho amigável Jogar-Ragnarok-2025.cmd.
INTEGRAÇÃO SOCIAL

2. Bot de Discord com Telemetria & Alertas de MVPs

Criar um bot leve rodando em Node.js ou Python na VPS Core que conecta a um canal do Discord do grupo de amigos:

  • Alertas de MVP: Notifica no Discord quando um MVP for derrotado (quem matou e em qual mapa).
  • Status do Servidor: Comando /status informando se Login, Char e Map estão online e quem está logado.
  • Chat Bridge: Espelha o canal principal do jogo (#main) em um canal do Discord para quem estiver no trabalho/celular.
✅ ATIVO & CARREGADO NO MAP

3. Sistema de Presença Diária (Attendance Rewards - 28 Dias)

Configurado e ativado com sucesso em db/import/attendance.yml, carregado pelo ragnarok@map na VPS:

  • Calendário Completo de 28 Dias: Cartões Kafra, Galhos Secos/Sangrentos, Poções do Vento/Vida, Manuais de Combate e Caixas de Teleporte.
  • Recompensa Suprema (Dia 28): Visual Exclusivo [980000] Asas do Sniper (coleção Mihael).
  • Integração com Cliente: Janela de presença abre automaticamente uma vez ao dia ao logar no jogo.
MOTOR NATIVO rATHENA

4. Ativação Plena do Web Server In-Game (Porta 8888)

O serviço ragnarok@web já está online e ouvindo em 157.151.181.22:8888. No cliente 2025, o jogo abre navegadores internos para:

  • Loja de Visuais / Cash Shop Web: Interface HTML5 bonita para resgate de visuais sem precisar de NPC engessado.
  • Guia de Navegação & Drops: Consulta in-game de monstros, taxas de drop e localização de mapas.
✅ ATIVOS NO MAPA

5. Pacote de NPCs Utilitários Essenciais (Prontera)

NPCs customizados e traduzidos para PT-BR em execução no servidor Map:

  • Teleportadora Oficial: Cidades, Cavernas, Campos e Castelos GvG com diálogos em português.
  • Mestra das Classes: Avanço de classe direto para primeiras classes, 2-1/2-2, Transclasses e Terceiras classes.
  • Remoção e Armazenamento: Cartão Kafra e Sino de Utilidades liberados.
✅ IMPLANTADO & REPLICANDO

6. Backup Consistente com Replicação Offsite (Core → Map VPS)

Script /usr/local/sbin/ragnarok-backup com snapshot MariaDB diário às 06:00 UTC e replicação automática via SSH/rsync para a Map VPS:

  • Replicação VCN Privada: Envia dumps .sql.gz e .sha256 para 10.10.0.222:/home/ubuntu/backups_replica/.
  • Telemetria Estruturada: Gera backup_status.json exposto diretamente na API /api/public/status.
  • Suporte OCI Cloud: Suporte nativo ao rclone para sincronização de bucket Object Storage.

Localização Completa em Português do Brasil (PT-BR / bRO)

Estratégia em 3 camadas para transformar o servidor no padrão consagrado pelo bRO / LATAM.

01
Camada Servidor (rAthena Core)

Mensagens de sistema, anúncios de batalha, comandos @atcommand e avisos do servidor.

✅ Ativo no Servidor (map_msg_por)
02
Camada de Diálogos (NPCs & Quests)

Falas de NPCs, utilitários, placas e anúncios em cidades clássicas (Prontera, Geffen, Morroc, etc.).

✅ Curandeira, Warper & Mestre
03
Camada Cliente (LUBs & Gráficos)

Nomes e descrições de itens (itemInfo.lub), tabelas de strings, nomes de monstros e mapas.

Distribuição via Launcher

Passo a Passo de Implementação da Tradução

Passo 1: Ativar Mensagens PT-BR no rAthena (`map_msg_por.conf`)

O repositório já inclui o arquivo completo servidor/conf/msg_conf/map_msg_por.conf com mais de 1.780 linhas de mensagens traduzidas para o Português do Brasil.

Para aplicar como padrão do servidor para todos os jogadores sem precisar recompilar:

# Em servidor/conf/msg_conf/import/map_msg_eng_conf.txt: import: conf/msg_conf/map_msg_por.conf

Como map_msg.conf carrega map_msg_eng_conf.txt no final, isso sobrescreve todas as mensagens em inglês pelas mensagens em português do Brasil!

Passo 2: Suporte a Multi-idioma via `@langtype`

Para permitir que jogadores alternem entre idiomas no chat com @langtype portuguese (ou @langtype 8):

// Em servidor/src/common/msg_conf.hpp ou src/custom/defines_pre.hpp: #define LANG_ENABLE 0xFFF // Habilita todos os idiomas suportados

Passo 3: Localização de NPCs e Scripts Utilitários

Substituir os NPCs de utilidades em inglês por versões consagradas da comunidade brasileira (base Cronus / rA-BR):

  • Curandeira: Diálogos em português com gírias e acolhimento em Prontera.
  • Mestra das Classes: Textos em PT-BR para evolução de Aprendiz → 1ª Classe → Transclasse → 3ª Classe → 4ª Classe.
  • Teleportadora: Nomes das cidades e calabouços em português (ex: "Caverna de Payon", "Pirâmides de Morroc", "Geffenia").

Passo 4: Localização do Cliente (Itens, Habilidades & Menus)

A pasta client-custom/SystemEN/itemInfo_C.lua já possui itens e visuais customizados em português. Para que os mais de 30.000 itens oficiais também apareçam em português:

  • Integrar o arquivo System/itemInfo.lub oficial extraído do bRO (Ragnarok Brasil).
  • Configurar o sincronizador tools/sync_client.py para injetar automaticamente o pacote PT-BR na pasta do jogo dos amigos pelo launcher.
  • Adicionar data/msgstringtable.txt e data/mapnametable.txt traduzidos para nomes de mapas e janelas do sistema em português.

Pokémon FireRed ATB — Status da Engine & Próximas Fases

Motor de combate em tempo real com barras de ação ativas e encontros diretamente no mapa do jogo.

v0.4.0 Versão Atual Estável
386 Sprites de Acompanhantes
12 Tipos de Pokébolas no Combate
100% Testes Headless mGBA
CONCLUÍDO · v0.4.0

Multi-Ball Selector & Troca de Equipe no Mapa

  • ✅ Seletor Dinâmico de Pokébolas: Botões L e R alternam entre 12 esferas com contagem em tempo real da mochila e taxas autênticas da Gen III.
  • ✅ Troca de Pokémon no Combate: Pressionar SELECT com ATB cheia rotaciona para o próximo mon consciente da equipe com custo de turno.
  • ✅ Atualização Dinâmica do Acompanhante: Troca imediata da espécie no mapa via FieldFollower_SetSpecies com recarga de paleta VRAM e grito nativo.
  • ✅ Persistência da Esfera Capturada: O ID exato da Pokébola utilizada é gravado nos dados nativos da criatura (MON_DATA_POKEBALL).
  • ✅ Suíte mGBA Headless: 100% de aprovação em tools/world.py test sem quebrar o fluxo de abertura da campanha original.
CONCLUÍDO · v0.3.0

Combate no Mapa & Acompanhante em Campo

  • ✅ Primeiro Pokémon da equipe segue o treinador no mapa com intervalo de 2 casas e animações direcionais suaves de caminhada/corrida.
  • ✅ Batalha contra selvagens terrestres ocorre diretamente no mapa do FireRed (sem tela de transição clássica).
  • ✅ Barras de ação ATB sincronizadas pela velocidade dos monstrinhos.
  • ✅ Ganho de EXP, aprendizado de golpes e evolução preservados após vitória.
  • ✅ Nocaute de selvagem com estado de captura especial com HP zerado.
EM PLANEJAMENTO · v0.5.0

Animações de Golpes, Efeitos Sonoros & Áreas Especiais

  • 🎯 Animações de Golpes em Campo: Integrar partículas e efeitos visuais nativos do motor GBA na posição exata dos combatentes no mapa.
  • 🎯 Áudio & Transições Musicais: Fade-in suave da trilha sonora de batalha no mapa com retorno instantâneo à música da rota ao vencer.
  • 🎯 Encontros em Água & Cavernas: Estender o combate de campo para o Surf aquático e áreas escuras/cavernas.
  • 🎯 Adaptação para Batalhas de Treinadores: Apresentação e balanceamento do agendador ATB para duelos contra NPCs e Líderes de Ginásio.

Portal Web, Dashboard VPS & Infraestrutura Cloud

Arquitetura do ecossistema banzak.party e rag.banzak.party.

Otimização do Motor de Banco (Subprocess → Connection Pool)

Atualmente, a função sql_query() em portal_server.py executa o comando mariadb --protocol=socket via subprocess.run em cada requisição HTTP.

Impacto: O polling do painel a cada 15 segundos gera centenas de forks de processos Linux na VPS de 1 GB de RAM, causando picos de CPU desnecessários.

Solução: Substituir por uma conexão persistente via biblioteca nativa em Python (pymysql com socket UNIX) ou pool de conexões reutilizadas.

Alertas Proativos de Telemetria no Celular

O portal mobile já lê RAM, Swap, Disco e CPU das duas VPS (`157.151.181.22` e `129.213.62.7`).

Melhoria: Adicionar badges visuais pulsantes e alertas sonoros no PWA mobile quando:
  • Uso de RAM passar de 85% em qualquer VPS.
  • Uso de Swap passar de 500 MB (indicando pressão de memória).
  • Qualquer daemon (map, char, login, mariadb) parar de responder.

Ações Imediatas de Manutenção no Painel Mobile

Adicionar atalhos de um clique na aba ADM do celular:

  • Disparar Backup Imediato: Executa systemctl start ragnarok-backup.service sem precisar de SSH.
  • Download do Dump SQL: Baixar o arquivo .sql.gz mais recente direto pelo navegador móvel autenticado.
  • Limpeza de Cache / Recarregar Itens: Forçar recarga de item_db.yml e mihael_costumes.yml sem reiniciar o servidor.

Checklist Operacional Interativo do Administrador

Acompanhe em tempo real o progresso das tarefas de melhoria. As marcações são salvas automaticamente no seu navegador.

Progresso de Implementação 11 de 16 tarefas (69%)

🛡️ Segurança & Hardening

🇧🇷 Tradução PT-BR Ragnarok

⚔️ Ferramentas & QoL Ragnarok

🎮 Pokémon FireRed ATB