diff options
author | Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> | 2023-10-07 11:25:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-07 12:25:09 +0200 |
commit | c093ee10f004f7e2b8be2b326a4b087392ded544 (patch) | |
tree | 14db03b2f10549fe368919157906cd6be32e60d3 | |
parent | 9d8bedf580184313f419cdb60351e712712832e3 (diff) | |
download | NorthstarLauncher-c093ee10f004f7e2b8be2b326a4b087392ded544.tar.gz NorthstarLauncher-c093ee10f004f7e2b8be2b326a4b087392ded544.zip |
Expose origin auth state and errors to squirrel (#468)
Also moves `NSIsMasterServerAuthenticated` out of `scriptserverbrowser.cpp` because it didn't really fit there
This will be used for showing failed origin auth errors in the game's UI
-rw-r--r-- | NorthstarDLL/CMakeLists.txt | 1 | ||||
-rw-r--r-- | NorthstarDLL/masterserver/masterserver.cpp | 21 | ||||
-rw-r--r-- | NorthstarDLL/masterserver/masterserver.h | 4 | ||||
-rw-r--r-- | NorthstarDLL/scripts/client/scriptoriginauth.cpp | 35 | ||||
-rw-r--r-- | NorthstarDLL/scripts/client/scriptserverbrowser.cpp | 6 |
5 files changed, 61 insertions, 6 deletions
diff --git a/NorthstarDLL/CMakeLists.txt b/NorthstarDLL/CMakeLists.txt index a7ca1028..288d39b1 100644 --- a/NorthstarDLL/CMakeLists.txt +++ b/NorthstarDLL/CMakeLists.txt @@ -91,6 +91,7 @@ add_library(NorthstarDLL SHARED "scripts/client/scriptbrowserhooks.cpp" "scripts/client/scriptmainmenupromos.cpp" "scripts/client/scriptmodmenu.cpp" + "scripts/client/scriptoriginauth.cpp" "scripts/client/scriptserverbrowser.cpp" "scripts/client/scriptservertoclientstringcommand.cpp" "scripts/server/miscserverfixes.cpp" diff --git a/NorthstarDLL/masterserver/masterserver.cpp b/NorthstarDLL/masterserver/masterserver.cpp index c2bbdfd8..64f172c9 100644 --- a/NorthstarDLL/masterserver/masterserver.cpp +++ b/NorthstarDLL/masterserver/masterserver.cpp @@ -95,6 +95,10 @@ void MasterServerManager::AuthenticateOriginWithMasterServer(const char* uid, co std::string uidStr(uid); std::string tokenStr(originToken); + m_bOriginAuthWithMasterServerSuccessful = false; + m_sOriginAuthWithMasterServerErrorCode = ""; + m_sOriginAuthWithMasterServerErrorMessage = ""; + std::thread requestThread( [this, uidStr, tokenStr]() { @@ -142,9 +146,26 @@ void MasterServerManager::AuthenticateOriginWithMasterServer(const char* uid, co originAuthInfo["token"].GetString(), sizeof(m_sOwnClientAuthToken) - 1); spdlog::info("Northstar origin authentication completed successfully!"); + m_bOriginAuthWithMasterServerSuccessful = true; } else + { spdlog::error("Northstar origin authentication failed"); + + if (originAuthInfo.HasMember("error") && originAuthInfo["error"].IsObject()) + { + + if (originAuthInfo["error"].HasMember("enum") && originAuthInfo["error"]["enum"].IsString()) + { + m_sOriginAuthWithMasterServerErrorCode = originAuthInfo["error"]["enum"].GetString(); + } + + if (originAuthInfo["error"].HasMember("msg") && originAuthInfo["error"]["msg"].IsString()) + { + m_sOriginAuthWithMasterServerErrorMessage = originAuthInfo["error"]["msg"].GetString(); + } + } + } } else { diff --git a/NorthstarDLL/masterserver/masterserver.h b/NorthstarDLL/masterserver/masterserver.h index e87b31a2..c4fa56c2 100644 --- a/NorthstarDLL/masterserver/masterserver.h +++ b/NorthstarDLL/masterserver/masterserver.h @@ -96,6 +96,10 @@ class MasterServerManager bool m_bOriginAuthWithMasterServerDone = false; bool m_bOriginAuthWithMasterServerInProgress = false; + bool m_bOriginAuthWithMasterServerSuccessful = false; + std::string m_sOriginAuthWithMasterServerErrorCode = ""; + std::string m_sOriginAuthWithMasterServerErrorMessage = ""; + bool m_bSavingPersistentData = false; bool m_bScriptRequestingServerList = false; diff --git a/NorthstarDLL/scripts/client/scriptoriginauth.cpp b/NorthstarDLL/scripts/client/scriptoriginauth.cpp new file mode 100644 index 00000000..420c4872 --- /dev/null +++ b/NorthstarDLL/scripts/client/scriptoriginauth.cpp @@ -0,0 +1,35 @@ +#include "squirrel/squirrel.h" +#include "masterserver/masterserver.h" +#include "engine/r2engine.h" +#include "client/r2client.h" + +ADD_SQFUNC("bool", NSIsMasterServerAuthenticated, "", "", ScriptContext::UI) +{ + g_pSquirrel<context>->pushbool(sqvm, g_pMasterServerManager->m_bOriginAuthWithMasterServerDone); + return SQRESULT_NOTNULL; +} + +/* +global struct MasterServerAuthResult +{ + bool success + string errorCode + string errorMessage +} +*/ + +ADD_SQFUNC("MasterServerAuthResult", NSGetMasterServerAuthResult, "", "", ScriptContext::UI) +{ + g_pSquirrel<context>->pushnewstructinstance(sqvm, 3); + + g_pSquirrel<context>->pushbool(sqvm, g_pMasterServerManager->m_bOriginAuthWithMasterServerSuccessful); + g_pSquirrel<context>->sealstructslot(sqvm, 0); + + g_pSquirrel<context>->pushstring(sqvm, g_pMasterServerManager->m_sOriginAuthWithMasterServerErrorCode.c_str(), -1); + g_pSquirrel<context>->sealstructslot(sqvm, 1); + + g_pSquirrel<context>->pushstring(sqvm, g_pMasterServerManager->m_sOriginAuthWithMasterServerErrorMessage.c_str(), -1); + g_pSquirrel<context>->sealstructslot(sqvm, 2); + + return SQRESULT_NOTNULL; +} diff --git a/NorthstarDLL/scripts/client/scriptserverbrowser.cpp b/NorthstarDLL/scripts/client/scriptserverbrowser.cpp index ff6da6e2..1945b3dc 100644 --- a/NorthstarDLL/scripts/client/scriptserverbrowser.cpp +++ b/NorthstarDLL/scripts/client/scriptserverbrowser.cpp @@ -6,12 +6,6 @@ // functions for viewing server browser -ADD_SQFUNC("bool", NSIsMasterServerAuthenticated, "", "", ScriptContext::UI) -{ - g_pSquirrel<context>->pushbool(sqvm, g_pMasterServerManager->m_bOriginAuthWithMasterServerDone); - return SQRESULT_NOTNULL; -} - ADD_SQFUNC("void", NSRequestServerList, "", "", ScriptContext::UI) { g_pMasterServerManager->RequestServerList(); |