aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack <66967891+ASpoonPlaysGames@users.noreply.github.com>2023-10-07 11:25:09 +0100
committerGitHub <noreply@github.com>2023-10-07 12:25:09 +0200
commitc093ee10f004f7e2b8be2b326a4b087392ded544 (patch)
tree14db03b2f10549fe368919157906cd6be32e60d3
parent9d8bedf580184313f419cdb60351e712712832e3 (diff)
downloadNorthstarLauncher-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.txt1
-rw-r--r--NorthstarDLL/masterserver/masterserver.cpp21
-rw-r--r--NorthstarDLL/masterserver/masterserver.h4
-rw-r--r--NorthstarDLL/scripts/client/scriptoriginauth.cpp35
-rw-r--r--NorthstarDLL/scripts/client/scriptserverbrowser.cpp6
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();