💖 Apoie o Servidor

Escolha sua forma de contribuição:

Tutorial Criando seu Status Server para Foruns PhPBB PSO

Lugar pra conversar com outros jogadores, fazer amizade e marcar partidas.
Avatar do usuário
Resistência PSO
Site Admin
Mensagens: 301
Registrado em: 02 Abr 2025, Qua, 10:16
Localização: Pioneer 2
Has thanked: 26 times
Been thanked: 96 times
Contato:

Tutorial Criando seu Status Server para Foruns PhPBB PSO

Mensagem por Resistência PSO »

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:

Código: Selecionar todos

nano /var/www/html/status_json.php
2. Cole este código:

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'
]);
?>
3. Salve e saia
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
Se funcionar, você verá algo como:

Código: Selecionar todos

{
  "hunters": "1",
  "dreamcast": "1",
  "gamecube": "0",
  "episode": "0",
  "psobb": "0"
}
6. Atualizar o JavaScript no overall_footer.html
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>
7. Limpar o cache do phpBB

Código: Selecionar todos

rm -rf /var/www/html/phpbb/cache/*.php
Solução definitiva: garantir que o arquivo esteja no DocumentRoot
1. Verifique se o arquivo existe
Execute via PuTTY:

Código: Selecionar todos

ls /var/www/html/status_json.php
Se não estiver lá, crie ou mova com:

Código: Selecionar todos

nano /var/www/html/status_json.php
Cole o código JSON que criamos anteriormente.

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
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

Código: Selecionar todos

mv /var/www/html/status_json.php /var/www/html/phpbb/status_json.php
2. Atualizar o JavaScript
No overall_footer.html, mude o fetch() para:

Código: Selecionar todos

const response = await fetch("status_json.php");
Isso busca o JSON dentro da pasta do fórum, onde o Apache já está servindo corretamente.

3. Limpar o cache do phpBB

Código: Selecionar todos

rm -rf /var/www/html/phpbb/cache/*.php
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:

Código: Selecionar todos

nano /var/www/html/phpbb/status_json.php
Substitua este trecho:

Código: Selecionar todos

preg_match('/<strong>Dreamcast:<\/strong>\s*(\d+)/i', $html, $dreamcast);
Por este:

Código: Selecionar todos

preg_match('/<strong>Dreamcast\/PC:<\/strong>\s*(\d+)/i', $html, $dreamcast);
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:

Código: Selecionar todos

rm -rf /var/www/html/phpbb/cache/*.php
Parabéns você agora tem o Status Server Funcional em seu Forum @onion20@
Imagem
Responder