Tutorial Criando seu Status Server para Foruns PhPBB PSO
Enviado: 17 Jul 2025, Qui, 23:14
não posso deixar que meu trabalho fique restrito apenas a mim apesar de parecer simples muitos não sabem como criar um Status Server para seus servidores de Phantasy Star Online então deixo aqui esse presente da Resistência a quem desejar criar um sem ter que ficar meses na internet procurando por isso
Vamos transformar o status em JSON, que é muito mais fácil de interpretar no JavaScript. Aqui está o plano completo, passo a passo:
Visão geral
Vamos criar um novo arquivo chamado status_json.php
Ele vai buscar o status original via HTTP
Vai extrair os dados com regex
Vai entregar tudo como JSON para o JavaScript
Etapas detalhadas
1. Criar o arquivo status_json.php
No terminal via PuTTY:
2. Cole este código:
3. Salve e saia
Ctrl + O → Enter
Ctrl + X
4. Corrigir permissões
Se funcionar, você verá algo como:
6. Atualizar o JavaScript no overall_footer.html
Abra com WinSCP e substitua o script por:
7. Limpar o cache do phpBB
Solução definitiva: garantir que o arquivo esteja no DocumentRoot
1. Verifique se o arquivo existe
Execute via PuTTY:
Se não estiver lá, crie ou mova com:
Cole o código JSON que criamos anteriormente.
2. Corrigir permissões
Solução estratégica: mover o JSON para dentro do fórum
Vamos colocar o status_json.php dentro da pasta do fórum, onde sabemos que o Apache está servindo corretamente.
1. Mover o arquivo
2. Atualizar o JavaScript
No overall_footer.html, mude o fetch() para:
Isso busca o JSON dentro da pasta do fórum, onde o Apache já está servindo corretamente.
3. Limpar o cache do phpBB
O que funcionou perfeitamente
O bloco “Status do Servidor” está exibindo os dados reais:
Hunters Online: 1
Dreamcast/PC: 0
GameCube: 0
Episode III: 0
psoBB: 0
Isso significa que o status_json.php está funcionando, o JavaScript está interpretando corretamente, e o fórum está exibindo os dados em tempo real!
O que funcionou perfeitamente
O bloco “Status do Servidor” está exibindo os dados reais:
Hunters Online: 1
Dreamcast/PC: 0
GameCube: 0
Episode III: 0
psoBB: 0
Isso significa que o status_json.php está funcionando, o JavaScript está interpretando corretamente, e o fórum está exibindo os dados em tempo real!
Possivel erro que encontrará nessa ultima etapa
Diagnóstico técnico
O problema está no regex do JavaScript que extrai o número de jogadores por plataforma. A resposta JSON está correta, mas o campo dreamcast está sendo interpretado como vazio.
Solução: revisar o regex no status_json.php
Abra o arquivo:
Substitua este trecho:
Por este:
Isso garante que o script capture corretamente o número de jogadores na plataforma Dreamcast/PC, como aparece no HTML original.
1. Salve e saia
Ctrl + O → Enter
Ctrl + X
por ultimo faça isso no Putty:
Parabéns você agora tem o Status Server Funcional em seu Forum @onion20@
Vamos transformar o status em JSON, que é muito mais fácil de interpretar no JavaScript. Aqui está o plano completo, passo a passo:
Visão geral
Vamos criar um novo arquivo chamado status_json.php
Ele vai buscar o status original via HTTP
Vai extrair os dados com regex
Vai entregar tudo como JSON para o JavaScript
Etapas detalhadas
1. Criar o arquivo status_json.php
No terminal via PuTTY:
Código: Selecionar todos
nano /var/www/html/status_json.php
Código: Selecionar todos
<?php
header('Content-Type: application/json');
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
$html = file_get_contents('http://167.88.32.81/phpbb/status_server.php');
preg_match('/<h2[^>]*>(\d+)\s+hunters\s+online<\/h2>/i', $html, $hunters);
preg_match('/<strong>Dreamcast:<\/strong>\s*(\d+)/i', $html, $dreamcast);
preg_match('/<strong>GameCube:<\/strong>\s*(\d+)/i', $html, $gamecube);
preg_match('/<strong>Episode III:<\/strong>\s*(\d+)/i', $html, $episode);
preg_match('/<strong>PSOBB:<\/strong>\s*(\d+)/i', $html, $psobb);
echo json_encode([
'hunters' => $hunters[1] ?? 'N/A',
'dreamcast' => $dreamcast[1] ?? 'N/A',
'gamecube' => $gamecube[1] ?? 'N/A',
'episode' => $episode[1] ?? 'N/A',
'psobb' => $psobb[1] ?? 'N/A'
]);
?>
Ctrl + O → Enter
Ctrl + X
4. Corrigir permissões
Código: Selecionar todos
chown www-data:www-data /var/www/html/status_json.php
chmod 644 /var/www/html/status_json.php
Código: Selecionar todos
{
"hunters": "1",
"dreamcast": "1",
"gamecube": "0",
"episode": "0",
"psobb": "0"
}
Abra com WinSCP e substitua o script por:
Código: Selecionar todos
<script>
async function fetchServerStatus() {
try {
const response = await fetch("/status_json.php");
const data = await response.json();
document.getElementById("hunters-online").textContent = data.hunters;
document.getElementById("dreamcast-pc").textContent = data.dreamcast;
document.getElementById("gamecube").textContent = data.gamecube;
document.getElementById("episode-iii").textContent = data.episode;
document.getElementById("psobb").textContent = data.psobb;
} catch (error) {
console.error("Erro ao buscar status do servidor:", error);
}
}
fetchServerStatus();
setInterval(fetchServerStatus, 60000);
</script>
Código: Selecionar todos
rm -rf /var/www/html/phpbb/cache/*.php
1. Verifique se o arquivo existe
Execute via PuTTY:
Código: Selecionar todos
ls /var/www/html/status_json.php
Código: Selecionar todos
nano /var/www/html/status_json.php
2. Corrigir permissões
Código: Selecionar todos
chown www-data:www-data /var/www/html/status_json.php
chmod 644 /var/www/html/status_json.php
Vamos colocar o status_json.php dentro da pasta do fórum, onde sabemos que o Apache está servindo corretamente.
1. Mover o arquivo
Código: Selecionar todos
mv /var/www/html/status_json.php /var/www/html/phpbb/status_json.php
No overall_footer.html, mude o fetch() para:
Código: Selecionar todos
const response = await fetch("status_json.php");
3. Limpar o cache do phpBB
Código: Selecionar todos
rm -rf /var/www/html/phpbb/cache/*.php
Hunters Online: 1
Dreamcast/PC: 0
GameCube: 0
Episode III: 0
psoBB: 0
Isso significa que o status_json.php está funcionando, o JavaScript está interpretando corretamente, e o fórum está exibindo os dados em tempo real!
O que funcionou perfeitamente
Hunters Online: 1
Dreamcast/PC: 0
GameCube: 0
Episode III: 0
psoBB: 0
Isso significa que o status_json.php está funcionando, o JavaScript está interpretando corretamente, e o fórum está exibindo os dados em tempo real!
Possivel erro que encontrará nessa ultima etapa
Diagnóstico técnico
O problema está no regex do JavaScript que extrai o número de jogadores por plataforma. A resposta JSON está correta, mas o campo dreamcast está sendo interpretado como vazio.
Solução: revisar o regex no status_json.php
Abra o arquivo:
Código: Selecionar todos
nano /var/www/html/phpbb/status_json.php
Código: Selecionar todos
preg_match('/<strong>Dreamcast:<\/strong>\s*(\d+)/i', $html, $dreamcast);
Código: Selecionar todos
preg_match('/<strong>Dreamcast\/PC:<\/strong>\s*(\d+)/i', $html, $dreamcast);
1. Salve e saia
Ctrl + O → Enter
Ctrl + X
por ultimo faça isso no Putty:
Código: Selecionar todos
rm -rf /var/www/html/phpbb/cache/*.php