Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 07/14/24 em %

  1. Instalando o Sistema max_packets_per_seconds no Servidor 0.x Passo 1: Modificar o Connection.cpp Abra o arquivo Connection.cpp. Procure pela função: void Connection::parseHeader(const boost::system::error_code& error) Antes da linha: --m_pendingRead; try Adicione o seguinte código: uint32_t timePassed = std::max<uint32_t>(1, (time(NULL) - m_timeConnected) + 1); if ((++m_packetsSent / timePassed) > static_cast<uint32_t>(g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND))) { std::cout << convertIPAddress(getIP()) << " disconnected for exceeding packet per second limit." << std::endl; close(); m_connectionLock.unlock(); return; } if (timePassed > 2) { m_timeConnected = time(NULL); m_packetsSent = 0; } Passo 2: Modificar o Connection.h Abra o arquivo Connection.h. Procure pela classe: class Connection : public boost::enable_shared_from_this<Connection>, boost::noncopyable Abaixo de: m_protocol = NULL; Adicione: m_packetsSent = 0; m_timeConnected = time(NULL); Abaixo de: uint32_t m_refCount; Adicione: time_t m_timeConnected; uint32_t m_packetsSent; Passo 3: Modificar o ProtocolGame.cpp Abra o arquivo ProtocolGame.cpp. Procure pela função: void ProtocolGame::parsePacket(NetworkMessage &msg) Abaixo de: if(!player || !m_acceptPackets || g_game.getGameState() == GAME_STATE_SHUTDOWN || msg.getMessageLength() <= 0) return; Adicione: uint32_t now = time(NULL); if(m_packetTime != now) { m_packetTime = now; m_packetCount = 0; } ++m_packetCount; if(m_packetCount > (uint32_t)g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND)) return; Passo 4: Modificar o ProtocolGame.h Abra o arquivo ProtocolGame.h. Procure por: ProtocolGame(Connection_ptr connection): Protocol(connection) Substitua: m_eventConnect = 0; por: m_eventConnect = m_packetCount = m_packetTime = 0; Procure por: uint32_t m_eventConnect Substitua por: uint32_t m_eventConnect, m_maxSizeCount, m_packetCount, m_packetTime; Passo 5: Modificar o ConfigManager.cpp Abra o arquivo ConfigManager.cpp. Procure por: m_loaded = true; Acima disso, adicione: m_confNumber[MAX_PACKETS_PER_SECOND] = getGlobalNumber("max_packets_per_second", 500); Passo 6: Modificar o ConfigManager.h Abra o arquivo ConfigManager.h. Procure por LAST_NUMBER_CONFIG /* this must be the last one */ Acima disso, adicione: MAX_PACKETS_PER_SECOND, Passo 7: Modificar o config.lua No arquivo config.lua do seu servidor, adicione: max_packets_per_second = 80 Lembrando que, quanto maior o número, mais pacotes a pessoa pode enviar sem ser desconectada. Medidas para ajudar a proteger o servidor contra ataques de "packet flood" ou "SYN flood". Esses ataques envolvem o envio de um grande número de pacotes ao servidor em um curto espaço de tempo, com a intenção de sobrecarregar os recursos do servidor e causar falhas ou degradação no desempenho. Implementando o sistema max_packets_per_seconds, você está limitando o número de pacotes que cada conexão pode enviar por segundo. Isso ajuda a mitigar o impacto de ataques de flood, desconectando automaticamente conexões que excedem o limite configurado de pacotes por segundo. Essas mudanças melhoram a resiliência do seu servidor contra certos tipos de ataques de negação de serviço (DoS), contribuindo para a estabilidade e segurança do seu OTServer. Créditos @L3K0T por esse tutorial formatado. @Yan Liima [TFS 0.4 REV3996] pelo código
  2. Base PokeWish + Pokelight

    saito reagiu a ZenohXX por uma resposta no tópico

    1 ponto
    Olá, contextualizando, para quem não me conhece, por algum tempo trabalhei em um servidor de poketibia chamado Pokelight. Utilizamos a base, que compramos, do PokeWish parar criar nosso servidor Pokelight, mas com o tempo a staff acabou optando por tomar outros rumos, tanto profissionais quanto pessoais e acabou que não fazia mais sentido continuarmos com o projeto. Sabendo do potencial dessa base e da paixão que ainda tenho por poketibia, na esperança de que surja um servidor bacana com esta base, venho disponibilizar todos os arquivos do servidor. Vídeos do projeto Em breve farei alguns tutoriais e observações de como fazer o melhor uso possível dos arquivos e disponibilizarei mais recursos usados durante o projeto, além de dar suporte a solução de problemas aqui neste tópico. Utilize Ubuntu 20.04 para executar o servidor. Servidor: Link para download (Servidor Wish, cliente Wish, ferramentas e sources): https://drive.google.com/file/d/14Kl7Bw86Y9Cm1GPy-BUuDJSYqHBUCdGV Link para download (RME): https://drive.google.com/file/d/1bwAcuhkRxF2RZ_rcpvSOvxExrWE9oMDC Link para download (Cliente Pokelight): https://drive.google.com/file/d/1PFUp7grPXcV2enUp3Og7BO9LFnSjs5Il Link para download (Servidor Pokelight última versão): https://drive.google.com/file/d/1057SbzLui7uOXcxJMoc5yaa3_9F8O-os/ Scan: Arquivos passam de 700MB, não é possível fazer o scan.
  3. Esse tutorial será composto por vários passo-a-passo (tópicos) de como montar toda a infraestrutura para deixar um servidor TFS 1.x online no Linux Ubuntu 22.04. INICIANDO A MÁQUINA LINUX É importante que toda vez que você entrar em sua máquina UBUNTU você atualize os pacotes já instalados para as versões mais recentes com o comando: sudo apt update E depois procure por novos pacotes de atualização para a versão do UBUNTU instalado. (em alguns casos irá perguntar se você realmente deseja instalar determinado pacote, digite Y (yes - sim) e depois ENTER. sudo apt upgrade PILHA LEMP - Inicialmente você deve entender que as versões mais atuais do TFS suportam apenas o MySQL como armazenamento de banco de dados e não usam mais "account manager" no jogo para criação de contas, portanto você deverá ter um site para isto. - Para usar um site você deverá instalar o pacote de pilha conhecido como LEMP, que basicamente é um grupo de programas com a abreviação de LINUX - ENGINE X (nginx) - MySQL ou MariaDB (no caso usaremos a MariaDB) - PHP. - Para quem é mais leigo, é interessante saber que o Nginx é um servidor web (irá mostrar as páginas web), o MariaDB é programa de armazenamento e gerenciamento de dados do banco de dados e o PHP serve para processar código e gerar conteúdo dinâmico para o servidor Web. 1 - TUTORIAL DE COMO INSTALAR O NGINX NO UBUNTU 22.04 2 - TUTORIAL DE COMO INSTALAR O MARIADB NO UBUNTU 22.04 3 - TUTORIAL DE COMO INSTALAR O PHP NO UBUNTU 22.04 PHPMYADMIN - Apesar de já termos instalado o programa MariaDB que armazena e gerencia os dados de seu projeto, sabemos que não é muito fácil manipular os dados apenas por comandos no prompt (ainda mais por leigos) .. diante disso, iremos usar o PHPMYADMIN, que através de um interface web, realiza as ações no banco de dados de forma fácil e prática ... - TUTORIAL DE COMO INSTALAR O PHPMYADMIN NO UBUNTU 22.04 AJUSTANDO O TIMEZONE - Muitas máquina vem com o horário diferente do horário de sua região, para ver a hora da máquina basta usar o comando: date Se estiver diferente, você poderá usar o seguinte comando: sudo timedatectl set-timezone America/Sao_Paulo Com o comando acima, você estará mudando a timezone para "America/Sao_Paulo", ou seja, ficará com o horário local do estado de São Paulo. Caso queira encontrar outra timezone, digite: timedatectl list-timezones Para sair da lista use CTRL+C. Aposta feita a alteração, é necessário reiniciar a máquina: sudo shutdown -r now E depois testar novamente. COMPILAR E CONFIGURAR TFS - TUTORIAL DE COMO COMPILAR E CONFIGURAR O TFS NO UBUNTU 22.04 INSTALAR E CONFIGURAR SITE Existem, hoje em dia, várias opções de sites para otservs, e com o tempo quero fazer um tutorial para cada um ... - TUTORIAL DE COMO INSTALAR E CONFIGURAR O ZNOTE ACC NO UBUNTU 22.04 Esse tópico estará em constante atualização .. e cada mudança irei informar nos comentários. Bom uso!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo