Merge pull request #9007 from Learath2/pr_olddomain

Ban compromised old versions
This commit is contained in:
Dennis Felsing 2024-09-21 22:53:05 +00:00 committed by GitHub
commit be74009fbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 0 deletions

View file

@ -1434,6 +1434,11 @@ bool CServer::CheckReservedSlotAuth(int ClientId, const char *pPassword)
return false; return false;
} }
void CServer::DropOldClient(int ClientId)
{
m_NetServer.Drop(ClientId, "This version of the client is compromised. Do not click the update button. ddnet.org/olddomain");
}
void CServer::ProcessClientPacket(CNetChunk *pPacket) void CServer::ProcessClientPacket(CNetChunk *pPacket)
{ {
int ClientId = pPacket->m_ClientId; int ClientId = pPacket->m_ClientId;
@ -1495,6 +1500,13 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
{ {
return; return;
} }
if(DDNetVersion < VERSION_DDNET_NEW_DOMAIN)
{
DropOldClient(ClientId);
return;
}
m_aClients[ClientId].m_ConnectionId = *pConnectionId; m_aClients[ClientId].m_ConnectionId = *pConnectionId;
m_aClients[ClientId].m_DDNetVersion = DDNetVersion; m_aClients[ClientId].m_DDNetVersion = DDNetVersion;
str_copy(m_aClients[ClientId].m_aDDNetVersionStr, pDDNetVersionStr); str_copy(m_aClients[ClientId].m_aDDNetVersionStr, pDDNetVersionStr);
@ -1512,6 +1524,13 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
{ {
return; return;
} }
if(!m_aClients[ClientId].m_GotDDNetVersionPacket)
{
DropOldClient(ClientId);
return;
}
if(str_comp(pVersion, GameServer()->NetVersion()) != 0 && str_comp(pVersion, "0.7 802f1be60a05665f") != 0) if(str_comp(pVersion, GameServer()->NetVersion()) != 0 && str_comp(pVersion, "0.7 802f1be60a05665f") != 0)
{ {
// wrong version // wrong version

View file

@ -337,6 +337,7 @@ public:
void UpdateClientRconCommands(); void UpdateClientRconCommands();
bool CheckReservedSlotAuth(int ClientId, const char *pPassword); bool CheckReservedSlotAuth(int ClientId, const char *pPassword);
void DropOldClient(int ClientId);
void ProcessClientPacket(CNetChunk *pPacket); void ProcessClientPacket(CNetChunk *pPacket);
class CCache class CCache

View file

@ -126,6 +126,8 @@ enum
VERSION_DDNET_MULTI_LASER = 16040, VERSION_DDNET_MULTI_LASER = 16040,
VERSION_DDNET_ENTITY_NETOBJS = 16200, VERSION_DDNET_ENTITY_NETOBJS = 16200,
VERSION_DDNET_REDIRECT = 17020, VERSION_DDNET_REDIRECT = 17020,
VERSION_DDNET_NEW_DOMAIN = 16040,
}; };
typedef std::bitset<MAX_CLIENTS> CClientMask; typedef std::bitset<MAX_CLIENTS> CClientMask;