From 299b07a9edacf8caa04263df40964995163aa1a0 Mon Sep 17 00:00:00 2001 From: Linventif Date: Sun, 10 Mar 2024 03:42:31 +0100 Subject: [PATCH] add: new player temp token --- lua/gmod_integration/client/cl_net.lua | 10 +--- .../server/sv_players_tokens.lua | 27 ---------- lua/gmod_integration/server/sv_settings.lua | 1 + lua/gmod_integration/server/sv_tokens.lua | 50 +++++++++++++++++++ lua/gmod_integration/shared/sh_http.lua | 2 +- 5 files changed, 53 insertions(+), 37 deletions(-) delete mode 100644 lua/gmod_integration/server/sv_players_tokens.lua create mode 100644 lua/gmod_integration/server/sv_tokens.lua diff --git a/lua/gmod_integration/client/cl_net.lua b/lua/gmod_integration/client/cl_net.lua index 28d2c52..261594b 100644 --- a/lua/gmod_integration/client/cl_net.lua +++ b/lua/gmod_integration/client/cl_net.lua @@ -10,8 +10,6 @@ local netSend = { ["takeScreenShot"] = 4, ["restartMap"] = 5, ["verifyMe"] = 6, - ["getSingleUseToken"] = 7, - ["getMultiUseToken"] = 8 } function gmInte.SendNet(id, args, func) @@ -36,9 +34,6 @@ local netReceive = { [3] = function(data) gmInte.showTestConnection(data) end, - [4] = function(data) - gmInte.takeScreenShot(data.serverID, data.authToken) - end, [5] = function(data) gmInte.config = data end, @@ -49,10 +44,7 @@ local netReceive = { gmInte.openVerifPopup() end, [8] = function(data) - gmInte.singleUseToken(data) - end, - [9] = function(data) - gmInte.multiUseToken(data) + gmInte.config.token = data.token end } diff --git a/lua/gmod_integration/server/sv_players_tokens.lua b/lua/gmod_integration/server/sv_players_tokens.lua deleted file mode 100644 index 9397a3d..0000000 --- a/lua/gmod_integration/server/sv_players_tokens.lua +++ /dev/null @@ -1,27 +0,0 @@ -// -// Methods -// - -function gmInte.getClientOneTimeToken(ply, callback) - if (!ply:IsValid() || !ply:IsPlayer()) then return end - - gmInte.http.get("/players/" .. ply:SteamID64() .. "/single-token", function(code, data) - if (callback) then callback(data) end - end) -end - -function gmInte.createClientToken(ply, callback) - if (!ply:IsValid() || !ply:IsPlayer()) then return end - - gmInte.http.get("/players/" .. ply:SteamID64() .. "/tokens", function(code, data) - if (callback) then callback(data) end - end) -end - -function gmInte.revokeClientToken(ply, callback) - if (!ply:IsValid() || !ply:IsPlayer()) then return end - - gmInte.http.delete("/players/" .. ply:SteamID64() .. "/tokens", function(code, data) - if (callback) then callback(data) end - end) -end \ No newline at end of file diff --git a/lua/gmod_integration/server/sv_settings.lua b/lua/gmod_integration/server/sv_settings.lua index d8aed59..1d4b09d 100644 --- a/lua/gmod_integration/server/sv_settings.lua +++ b/lua/gmod_integration/server/sv_settings.lua @@ -56,6 +56,7 @@ function gmInte.publicGetConfig(ply) if (!ply:IsValid() || !ply:IsPlayer(ply)) then return end gmInte.SendNet("publicConfig", { + ["id"] = gmInte.config.id, ["debug"] = gmInte.config.debug, ["apiFQDN"] = gmInte.config.apiFQDN, ["websocketFQDN"] = gmInte.config.websocketFQDN, diff --git a/lua/gmod_integration/server/sv_tokens.lua b/lua/gmod_integration/server/sv_tokens.lua new file mode 100644 index 0000000..250b744 --- /dev/null +++ b/lua/gmod_integration/server/sv_tokens.lua @@ -0,0 +1,50 @@ +// +// Methods +// + +gmInte.serverPublicToken = gmInte.serverPublicToken || nil +function gmInte.getPublicServerToken(callback) + if (gmInte.serverPublicToken) then + if (callback) then callback(gmInte.serverPublicToken) end + return + end + + gmInte.http.get("/public-token", function(code, data) + gmInte.serverPublicToken = data.publicTempToken + callback(data.publicTempToken) + end) +end + +hook.Add("Initialize", "gmInte:Server:Initialize:GetPublicToken", function() + timer.Simple(1, function() + gmInte.getPublicServerToken(function(publicToken) + gmInte.log("Server Public Token Received: " .. publicToken) + end) + end) +end) + +gmInte.serverPlayerTempTokens = gmInte.serverPlayerTempTokens || {} +function gmInte.getPlayerTempToken(ply, callback) + if (gmInte.serverPlayerTempTokens[ply:SteamID64()] && gmInte.serverPlayerTempTokens[ply:SteamID64()].userID == ply:UserID()) then + if (callback) then callback(gmInte.serverPlayerTempTokens[ply:SteamID64()].token) end + return + end + + gmInte.getPublicServerToken(function(publicToken) + local token = util.SHA256(ply:SteamID64() .. "-" .. publicToken .. "-" .. gmInte.config.token .. "-" .. ply:UserID()) .. " " .. ply:UserID() + gmInte.serverPlayerTempTokens[ply:SteamID64()] = { token = token, userID = ply:UserID() } + callback(token) + end) +end + +function sendPlayerToken(ply) + gmInte.getPlayerTempToken(ply, function(token) + gmInte.SendNet("savePlayerToken", { + token = token, + }, ply) + end) +end + +hook.Add("gmInte:PlayerReady", "gmInte:Verif:PlayerReady", function(ply) + sendPlayerToken(ply) +end) \ No newline at end of file diff --git a/lua/gmod_integration/shared/sh_http.lua b/lua/gmod_integration/shared/sh_http.lua index 8a7918e..fd848b5 100644 --- a/lua/gmod_integration/shared/sh_http.lua +++ b/lua/gmod_integration/shared/sh_http.lua @@ -15,7 +15,7 @@ local function getAPIURL(endpoint) return url .. endpoint end - url = url .. "/clients/" .. LocalPlayer():SteamID64() + url = url .. "/clients/" .. LocalPlayer():SteamID64() .. "/servers/" .. gmInte.config.id end return url .. endpoint