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.
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.
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.
100% das senhas armazenadas de forma segura em hash. Zero senhas em texto puro no banco.
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).
Impossível forjar tokens JWT administrativos através de segredos previsíveis.
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.
Tolerância total a desastres com retenção de 14 dias em dois hosts físicos distintos da Oracle Cloud.
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.
Endpoints /api/auth/login, /api/public/register e /api/public/change-password protegidos.
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.
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.
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.ps1executa nativamente no Windows 10/11 sem instalar nenhum software extra. - Launcher Python / PyInstaller:
client-custom/launcher_gui.pymultiplataforma 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ávelJogar-Ragnarok-2025.cmd.
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
/statusinformando 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.
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.
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.
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.
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.gze.sha256para10.10.0.222:/home/ubuntu/backups_replica/. - Telemetria Estruturada: Gera
backup_status.jsonexposto diretamente na API/api/public/status. - Suporte OCI Cloud: Suporte nativo ao
rclonepara 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.
Mensagens de sistema, anúncios de batalha, comandos @atcommand e avisos do servidor.
Falas de NPCs, utilitários, placas e anúncios em cidades clássicas (Prontera, Geffen, Morroc, etc.).
✅ Curandeira, Warper & MestreNomes e descrições de itens (itemInfo.lub), tabelas de strings, nomes de monstros e mapas.
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.luboficial extraído do bRO (Ragnarok Brasil). - Configurar o sincronizador
tools/sync_client.pypara injetar automaticamente o pacote PT-BR na pasta do jogo dos amigos pelo launcher. - Adicionar
data/msgstringtable.txtedata/mapnametable.txttraduzidos 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.
Multi-Ball Selector & Troca de Equipe no Mapa
- ✅ Seletor Dinâmico de Pokébolas: Botões
LeRalternam entre 12 esferas com contagem em tempo real da mochila e taxas autênticas da Gen III. - ✅ Troca de Pokémon no Combate: Pressionar
SELECTcom 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_SetSpeciescom 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 testsem quebrar o fluxo de abertura da campanha original.
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.
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.
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`).
- 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.servicesem precisar de SSH. - Download do Dump SQL: Baixar o arquivo
.sql.gzmais recente direto pelo navegador móvel autenticado. - Limpeza de Cache / Recarregar Itens: Forçar recarga de
item_db.ymlemihael_costumes.ymlsem 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.