From 088c99beb7ff161636aedb701763d4746f85c034 Mon Sep 17 00:00:00 2001 From: SaltySnail Date: Sat, 27 Jun 2026 21:04:23 +0200 Subject: [PATCH] Refactor region handler --- include/RegionHandler.h | 4 ++-- src/Common.cpp | 25 +++++-------------------- src/RegionHandler.cpp | 8 ++++---- src/TConsole.cpp | 2 +- src/THeartbeatThread.cpp | 2 +- src/TNetwork.cpp | 2 +- 6 files changed, 14 insertions(+), 29 deletions(-) diff --git a/include/RegionHandler.h b/include/RegionHandler.h index b82c1d8..17917ae 100644 --- a/include/RegionHandler.h +++ b/include/RegionHandler.h @@ -25,8 +25,8 @@ class RegionHandler final { public: RegionHandler() = delete; - static void TopLevelDomainFailed(bool failed); - static std::string RegionToTopLevelDomain(const std::string region); + static void TopLevelDomainFailed(); + static std::string RegionToTopLevelDomain(); private: static inline unsigned int mRegionIndex { 0 }; const static inline std::array mValidTLDs {"beammp.com", "beammp.ru"}; diff --git a/src/Common.cpp b/src/Common.cpp index 4859980..8b43cf6 100644 --- a/src/Common.cpp +++ b/src/Common.cpp @@ -35,6 +35,7 @@ #include "Compat.h" #include "CustomAssert.h" #include "Http.h" +#include "RegionHandler.h" void Application::RegisterShutdownHandler(const TShutdownHandler& Handler) { std::unique_lock Lock(mShutdownHandlersMutex); @@ -75,39 +76,23 @@ std::string Application::ServerVersionString() { std::vector Application::GetBackendUrlsInOrder() { return { - "https://backend." + RegionToTopLevelDomain(Settings.getAsString(Settings::Key::General_Region)), + "https://backend." + RegionHandler::RegionToTopLevelDomain(), }; } std::string Application::GetServerCheckUrl() { - return "https://check." + RegionToTopLevelDomain(Settings.getAsString(Settings::Key::General_Region)); + return "https://check." + RegionHandler::RegionToTopLevelDomain(); } std::string Application::GetBackendUrlForAuth() { - return "https://auth." + RegionToTopLevelDomain(Settings.getAsString(Settings::Key::General_Region)); + return "https://auth." + RegionHandler::RegionToTopLevelDomain(); } std::string Application::GetBackendUrlForSocketIO() { - return "https://backend." + RegionToTopLevelDomain(Settings.getAsString(Settings::Key::General_Region)); -} - -void Application::TopLevelDomainFailed(bool failed) -{ - if (failed) { - beammp_info("Top Level Domain (" + mValidTLDs[mTLDIndex % mValidTLDs.size()] + ") failed to respond correctly, switching to " + mValidTLDs[(mTLDIndex + 1) % mValidTLDs.size()]); - mTLDIndex++; - } -} - -std::string Application::RegionToTopLevelDomain(const std::string region) -{ - if (region == "Developer") { - return "beammp.dev"; - } - return mValidTLDs[mTLDIndex % mValidTLDs.size()]; // Global + return "https://backend." + RegionHandler::RegionToTopLevelDomain(); } std::array Application::VersionStrToInts(const std::string& str) { diff --git a/src/RegionHandler.cpp b/src/RegionHandler.cpp index 07a947e..db9058c 100644 --- a/src/RegionHandler.cpp +++ b/src/RegionHandler.cpp @@ -19,16 +19,16 @@ #include "RegionHandler.h" #include "Common.h" -void RegionHandler::TopLevelDomainFailed(bool failed) +void RegionHandler::TopLevelDomainFailed() { - if (!failed) return; beammp_info("Top level domain of " + mValidTLDs[mRegionIndex % mValidTLDs.size()] + " didn't respond correctly , changing domain to " + mValidTLDs[(mRegionIndex + 1) % mValidTLDs.size()]); mRegionIndex++; } -std::string RegionHandler::RegionToTopLevelDomain(const std::string region) +std::string RegionHandler::RegionToTopLevelDomain() { - if (region == "Developer") { + static bool isDeveloperRegion = Application::Settings.getAsString(Settings::Key::General_Region) == "Developer"; + if (isDeveloperRegion) { return "beammp.dev"; } return mValidTLDs[mRegionIndex % mValidTLDs.size()]; // Global diff --git a/src/TConsole.cpp b/src/TConsole.cpp index 053de22..8c86b65 100644 --- a/src/TConsole.cpp +++ b/src/TConsole.cpp @@ -298,7 +298,7 @@ void TConsole::Command_NetTest(const std::string& cmd, const std::vector TNetwork::Authentication(TConnection&& RawConnection) { unsigned int ResponseCode = 0; AuthResStr = Http::POST(Application::GetBackendUrlForAuth() + Target, AuthReq.dump(), "application/json", &ResponseCode); if (AuthResStr == Http::ErrorString || ResponseCode != 200) { - Application::TopLevelDomainFailed(true); + Application::TopLevelDomainFailed(); AuthResStr = Http::POST(Application::GetBackendUrlForAuth() + Target, AuthReq.dump(), "application/json", &ResponseCode); }