Ir para conteúdo
Propaganda

[max_packets_per_second] 0.x


Posts Recomendados

Irei deixar aqui um tutorial breve de como você instala no seu 0.x, o sistema de max_packets_per_seconds para evitar attacks de packet no seu servidor

 

vamos mexer apenas na source:


Connection.cpp

procure por

void Connection::parseHeader(const boost::system::error_code& error)

antees disso:
	--m_pendingRead;
	try

coloque:

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

 

Connection.h

procure por:
class Connection : public boost::enable_shared_from_this<Connection>, boost::noncopyable
  
  abaixo de:
  m_protocol = NULL;
  
  coloque
  
        m_packetsSent = 0;
		m_timeConnected = time(NULL);
 
abaixo de:
uint32_t m_refCount;

  coloque:

time_t m_timeConnected;
uint32_t m_packetsSent;

 

em Protocolgame.cpp

procure por: 

void ProtocolGame::parsePacket(NetworkMessage &msg)

abaixo de:
	if(!player || !m_acceptPackets || g_game.getGameState() == GAME_STATE_SHUTDOWN
		|| msg.getMessageLength() <= 0)
		return;
    
coloque isso:                                
     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;

 

em Protocolgame.h

procure por:
ProtocolGame(Connection_ptr connection): Protocol(connection)

m_eventConnect = 0;

troque para

m_eventConnect = m_packetCount = m_packetTime = 0;


procure:
uint32_t m_eventConnect

troque para:

uint32_t m_eventConnect, m_maxSizeCount, m_packetCount, m_packetTime;

 

em configmanager.cpp

procure: 
m_loaded = true;

acima disso, adicione:

 m_confNumber[MAX_PACKETS_PER_SECOND] = getGlobalNumber("max_packets_per_second", 500);

 

em configmanager.h

procure por:

	LAST_NUMBER_CONFIG /* this must be the last one */

em cima, adicione:
MAX_PACKETS_PER_SECOND,

cuidado com a virgula

 

agora no config.lua do seu servidor:

adicione isso:     max_packets_per_second = 80
lembrando, que quanto maior o número, mais packets a pessoa pode enviar, sem ser kickado

 

créditos:
Yan Liima [ tfs 0.4 REV3996 ]

  • Like 4
  • Thanks 1
Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
  • Criar Novo...