Skip to content

Commit

Permalink
Expose origin auth state and errors to squirrel (R2Northstar#468)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ASpoonPlaysGames authored Oct 7, 2023
1 parent 9d8bedf commit c093ee1
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 6 deletions.
1 change: 1 addition & 0 deletions NorthstarDLL/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
21 changes: 21 additions & 0 deletions NorthstarDLL/masterserver/masterserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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]()
{
Expand Down Expand Up @@ -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
{
Expand Down
4 changes: 4 additions & 0 deletions NorthstarDLL/masterserver/masterserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
35 changes: 35 additions & 0 deletions NorthstarDLL/scripts/client/scriptoriginauth.cpp
Original file line number Diff line number Diff line change
@@ -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;
}
6 changes: 0 additions & 6 deletions NorthstarDLL/scripts/client/scriptserverbrowser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit c093ee1

Please sign in to comment.