From 6aeb2eb736347757f6e28c49de5f5a3cf8e405cd Mon Sep 17 00:00:00 2001 From: Tixx <83774803+WiserTixx@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:49:05 +0200 Subject: [PATCH] Add server identification packet --- include/THeartbeatThread.h | 1 + src/THeartbeatThread.cpp | 5 +++-- src/TNetwork.cpp | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/THeartbeatThread.h b/include/THeartbeatThread.h index 5a0c1ee..f81534c 100644 --- a/include/THeartbeatThread.h +++ b/include/THeartbeatThread.h @@ -29,6 +29,7 @@ public: //~THeartbeatThread(); void operator()() override; + static inline std::string lastCall = ""; private: std::string GenerateCall(); std::string GetPlayers(); diff --git a/src/THeartbeatThread.cpp b/src/THeartbeatThread.cpp index 303cc9b..6e4544c 100644 --- a/src/THeartbeatThread.cpp +++ b/src/THeartbeatThread.cpp @@ -140,8 +140,7 @@ void THeartbeatThread::operator()() { std::string THeartbeatThread::GenerateCall() { std::stringstream Ret; - Ret << "uuid=" << Application::Settings.getAsString(Settings::Key::General_AuthKey) - << "&players=" << mServer.ClientCount() + Ret << "players=" << mServer.ClientCount() << "&maxplayers=" << Application::Settings.getAsInt(Settings::Key::General_MaxPlayers) << "&port=" << Application::Settings.getAsInt(Settings::Key::General_Port) << "&map=" << Application::Settings.getAsString(Settings::Key::General_Map) @@ -156,6 +155,8 @@ std::string THeartbeatThread::GenerateCall() { << "&modstotal=" << mResourceManager.ModsLoaded() << "&playerslist=" << GetPlayers() << "&desc=" << Application::Settings.getAsString(Settings::Key::General_Description); + lastCall = Ret.str(); + Ret << "&uuid=" << Application::Settings.getAsString(Settings::Key::General_AuthKey); return Ret.str(); } THeartbeatThread::THeartbeatThread(TResourceManager& ResourceManager, TServer& Server) diff --git a/src/TNetwork.cpp b/src/TNetwork.cpp index f89035a..6ef9a15 100644 --- a/src/TNetwork.cpp +++ b/src/TNetwork.cpp @@ -20,6 +20,7 @@ #include "Client.h" #include "Common.h" #include "LuaAPI.h" +#include "THeartbeatThread.h" #include "TLuaEngine.h" #include "TScopedTimer.h" #include "nlohmann/json.hpp" @@ -246,6 +247,9 @@ void TNetwork::Identify(TConnection&& RawConnection) { boost::system::error_code ec; write(RawConnection.Socket, buffer("P"), ec); return; + } else if (Code == 'I') { + boost::system::error_code ec; + write(RawConnection.Socket, buffer(THeartbeatThread::lastCall), ec); } else { beammp_errorf("Invalid code got in Identify: '{}'", Code); }