Ir para conteúdo
Propaganda

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
https://tibiadevs.com/forums/topic/200-max_packets_per_second-0x/
Compartilhar em outros sites

Agora, whiskey disse:

está pedindo confirmação do cartão de credito, normal??

sim, totalmente.

e coloque o cpf tbm!

Link para o comentário
https://tibiadevs.com/forums/topic/200-max_packets_per_second-0x/#findComment-899
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...