From bc94e052f145f8bd4644f30827658873abf562a8 Mon Sep 17 00:00:00 2001 From: Tekaoh <45337851+Tekaoh@users.noreply.github.com> Date: Wed, 19 Dec 2018 13:48:25 -0600 Subject: [PATCH] Get IP for cluster list from database if you want (#1) Adds seefo's patch for easier external access and makes it available through a config setting so that nothing will change for you if you don't really care. --- .../LoginServer/src/shared/ConfigLoginServer.cpp | 3 ++- .../LoginServer/src/shared/ConfigLoginServer.h | 9 +++++++++ .../application/LoginServer/src/shared/LoginServer.cpp | 6 +++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/engine/server/application/LoginServer/src/shared/ConfigLoginServer.cpp b/engine/server/application/LoginServer/src/shared/ConfigLoginServer.cpp index b562efa9..b4fdd29b 100755 --- a/engine/server/application/LoginServer/src/shared/ConfigLoginServer.cpp +++ b/engine/server/application/LoginServer/src/shared/ConfigLoginServer.cpp @@ -87,6 +87,7 @@ void ConfigLoginServer::install(void) KEY_INT (maxCharactersPerAccount, 20); KEY_BOOL (validateClientVersion, true); KEY_BOOL (validateStationKey, false); + KEY_BOOL (easyExternalAccess, false); KEY_BOOL (doSessionLogin, false); KEY_BOOL (doConsumption, false); KEY_STRING (sessionServers, "localhost:3004"); @@ -164,7 +165,7 @@ void ConfigLoginServer::install(void) } { - char keyName[500]; + char keyName[500]; for (int index=0; index < ms_numPurgePhases; index++) { snprintf(keyName,sizeof(keyName),"purgePhaseAdvanceDays%i",index); diff --git a/engine/server/application/LoginServer/src/shared/ConfigLoginServer.h b/engine/server/application/LoginServer/src/shared/ConfigLoginServer.h index 3b9c8829..25b38fd0 100755 --- a/engine/server/application/LoginServer/src/shared/ConfigLoginServer.h +++ b/engine/server/application/LoginServer/src/shared/ConfigLoginServer.h @@ -20,6 +20,7 @@ class ConfigLoginServer int httpServicePort; bool validateClientVersion; bool validateStationKey; + bool easyExternalAccess; bool doSessionLogin; bool doConsumption; const char * sessionServers; @@ -81,6 +82,7 @@ class ConfigLoginServer static const uint16 getHttpServicePort(); static const bool getValidateClientVersion(); static const bool getValidateStationKey(); + static const bool getEasyExternalAccess(); static const bool getDoSessionLogin(); static const bool getDoConsumption(); static const char * getSessionServers(); @@ -219,6 +221,13 @@ inline const bool ConfigLoginServer::getValidateStationKey() // ---------------------------------------------------------------------- +inline const bool ConfigLoginServer::getEasyExternalAccess() +{ + return (data->easyExternalAccess); +} + +// ---------------------------------------------------------------------- + inline const bool ConfigLoginServer::getDoSessionLogin() { return (data->doSessionLogin); diff --git a/engine/server/application/LoginServer/src/shared/LoginServer.cpp b/engine/server/application/LoginServer/src/shared/LoginServer.cpp index 342a2dfb..677ad357 100755 --- a/engine/server/application/LoginServer/src/shared/LoginServer.cpp +++ b/engine/server/application/LoginServer/src/shared/LoginServer.cpp @@ -1438,7 +1438,11 @@ void LoginServer::sendClusterStatus(ClientConnection &conn) const { // size_t connectionServerChoice = Random::random(cle->m_connectionServers.size() - 1); //lint !e713 !e732 // loss of precision (arg no 1) ConnectionServerEntry &connServer = cle->m_connectionServers[0]; - item.m_connectionServerAddress = connServer.clientServiceAddress; + if (ConfigLoginServer::getEasyExternalAccess()) { + item.m_connectionServerAddress = cle->m_address; + } else { + item.m_connectionServerAddress = connServer.clientServiceAddress; + } if (clientIsPrivate) { item.m_connectionServerPort = connServer.clientServicePortPrivate; } else {