From 2ade39fd284265b377b9b82461d59c97a2b810d5 Mon Sep 17 00:00:00 2001 From: Jackz Date: Tue, 26 Nov 2024 15:57:18 -0600 Subject: [PATCH] Track users, names --- plugins/adminpanel.smx | Bin 27631 -> 29535 bytes scripting/adminpanel.sp | 104 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/plugins/adminpanel.smx b/plugins/adminpanel.smx index 5d201558d2e247f34f1cfdce06ebd1447cb7d8bf..70e0ef7abb61110317975b54a209a7b2b77b91a1 100644 GIT binary patch literal 29535 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

0eLF(qIx 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%0AFbHK&3 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 I;yK3u0emS7#Q*>R diff --git a/scripting/adminpanel.sp b/scripting/adminpanel.sp index fc44308..7da471b 100644 --- a/scripting/adminpanel.sp +++ b/scripting/adminpanel.sp @@ -7,6 +7,8 @@ #define DEFAULT_SERVER_PORT 7888 #define SOCKET_TIMEOUT_DURATION 90.0 +#define DATABASE_NAME "adminpanel" + #include #include #include @@ -14,6 +16,7 @@ #include #include #include +#include #undef REQUIRE_PLUGIN #tryinclude @@ -89,12 +92,20 @@ GameState g_gameState = State_Hibernating; Buffer sendBuffer; Buffer receiveBuffer; // Unfortunately there's no easy way to have this not be the same as BUFFER_SIZE +Database g_db; + public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) { // lateLoaded = late; return APLRes_Success; } public void OnPluginStart() { + if(!SQL_CheckConfig(DATABASE_NAME)) { + SetFailState("No database entry for '%s'; no database to connect to.", DATABASE_NAME); + } else if(!ConnectDB()) { + SetFailState("Failed to connect to database."); + } + g_socket = new Socket(SOCKET_TCP, OnSocketError); g_socket.SetOption(SocketKeepAlive, 1); g_socket.SetOption(SocketReuseAddr, 1); @@ -126,6 +137,7 @@ public void OnPluginStart() { cvar_difficulty.AddChangeHook(OnCvarChanged); gameDifficulty = GetDifficultyInt(); + HookEvent("player_info", Event_PlayerInfo); HookEvent("game_init", Event_GameStart); HookEvent("game_end", Event_GameEnd); HookEvent("heal_begin", Event_HealStart); @@ -160,6 +172,87 @@ public void OnPluginStart() { CreateTimer(300.0, Timer_FullSync, _, TIMER_REPEAT); } +bool ConnectDB() { + char error[255]; + g_db = SQL_Connect(DATABASE_NAME, true, error, sizeof(error)); + if (g_db == null) { + LogError("Database error %s", error); + delete g_db; + return false; + } else { + PrintToServer("Connected to database %s", DATABASE_NAME); + SQL_LockDatabase(g_db); + SQL_FastQuery(g_db, "SET NAMES \"UTF8mb4\""); + SQL_UnlockDatabase(g_db); + g_db.SetCharset("utf8mb4"); + return true; + } +} +//Setups a user, this tries to fetch user by steamid +void SetupUserInDB(int client) { + if(client > 0 && !IsFakeClient(client)) { + char country[128]; + char region[128]; + char ip[64]; + GetClientIP(client, ip, sizeof(ip)); + GeoipCountry(ip, country, sizeof(country)); + GeoipRegion(ip, region, sizeof(region)); + int time = GetTime(); + + char query[512]; + g_db.Format(query, sizeof(query), "INSERT INTO panel_user " + ..."(account_id,last_join_time,last_ip,last_country,last_region)" + ..."VALUES ('%s',%d,'%s','%s','%s')" + ..."ON DUPLICATE KEY UPDATE last_join_time=%d,last_ip='%s',last_country='%s',last_region='%s');", + steamidCache[client][10], // strip STEAM_#:#:##### returning only ending ####### + // insert: + time, + ip, + country, + region, + // update: + time, + ip, + country, + region + ); + g_db.Query(DBCT_Insert, query); + + g_db.Format(query, sizeof(query), "SELECT name FROM panel_user_names WHERE account_id = '%s' ORDER BY name_update_time DESC LIMIT 1", steamidCache[client][10]); // strip STEAM_#:#:##### returning only ending ####### + g_db.Query(DBCT_CheckUserName, query, GetClientUserId(client)); + } +} + +void DBCT_Insert(Database db, DBResultSet results, const char[] error, any data) { + if(db == null || results == null) { + LogError("DBCT_Insert returned error: %s", error); + } +} + +void DBCT_CheckUserName(Database db, DBResultSet results, const char[] error, int userId) { + if(db == null || results == null) { + LogError("DBCT_CheckUserName returned error: %s", error); + } else { + int client = GetClientOfUserId(userId); + if(client == 0) return; // Client left, ignore + + char prevName[64]; + // Insert new name if we have none, or prev differs + bool insertNewName = true; + if(results.FetchRow()) { + results.FetchString(0, prevName, sizeof(prevName)); + if(StrEqual(prevName, nameCache[client])) { + insertNewName = false; + } + } + + if(insertNewName) { + char query[255]; + g_db.Format(query, sizeof(query), "INSERT INTO panel_user_names (accountId,name,name_update_time) VALUES ('%s','%s',%d)", steamidCache[client][10], nameCache[client][10], GetTime()); + g_db.Query(DBCT_Insert, query); + } + } +} stock void Debug(const char[] format, any ...) { if(!cvar_debug.BoolValue) return; @@ -654,6 +747,13 @@ void StopServer() { ServerCommand("exit"); } +void Event_PlayerInfo(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + if(client && !IsFakeClient(client)) { + GetClientName(client, nameCache[client], 32); + } +} + void Event_GameStart(Event event, const char[] name, bool dontBroadcast) { campaignStartTime = GetTime(); g_gameState = State_NewGame; @@ -791,6 +891,7 @@ public void OnClientAuthorized(int client, const char[] auth) { } GetClientName(client, nameCache[client], MAX_NAME_LENGTH); playerJoinTime[client] = GetTime(); + SetupUserInDB(client); RequestFrame(SendNewClient, client); } // Player counts @@ -925,7 +1026,8 @@ void OnCvarChanged(ConVar convar, const char[] oldValue, const char[] newValue) if(serverPort == 0) serverPort = DEFAULT_SERVER_PORT; } PrintToServer("[AdminPanel] Sending data to %s:%d", serverIp, serverPort); - ConnectSocket(); + if(authToken[0] != '\0') + ConnectSocket(); } } else if(cvar_gamemode == convar) { strcopy(gamemode, sizeof(gamemode), newValue);