From 40ef96b4deb1d69fb0a29a81f95db33a22123431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Gr=C3=BCttemeier?= Date: Fri, 23 Oct 2020 23:21:11 +0200 Subject: [PATCH 1/4] Bugfix #68 Fixed the bug described in #68 where the ban import would fail if the user was not previously created in our database --- lua/msync/server/modules/sv_mbsync.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua/msync/server/modules/sv_mbsync.lua b/lua/msync/server/modules/sv_mbsync.lua index fc96ba1..fbce489 100644 --- a/lua/msync/server/modules/sv_mbsync.lua +++ b/lua/msync/server/modules/sv_mbsync.lua @@ -660,6 +660,29 @@ MSync.modules[info.ModuleIdentifier].init = function( transaction ) - Create User - Create ban query ]] + --[[ + Add user transaction + ]] + transactions[k..'_user'] = MSync.DBServer:prepare( [[ + INSERT INTO `tbl_users` (steamid, steamid64, nickname, joined) + VALUES (?, ?, ?, ?) + ON DUPLICATE KEY UPDATE steamid=steamid; + ]] ) + transactions[k..'_user']:setString(1, k) + transactions[k..'_user']:setString(2, util.SteamIDTo64( k )) + if ULib.ucl.users[k] then + transactions[k..'_user']:setString(3, ULib.ucl.users[k].name or 'None Given') + else + transactions[k..'_user']:setString(3, 'None Given') + end + transactions[k..'_user']:setString(4, os.date("%Y-%m-%d %H:%M:%S", os.time())) + + banTransaction:addQuery(transactions[k..'_user']) + MSync.log(MSYNC_DBG_DEBUG, "[MBSync] Import Bans: added create user transaction for: " .. k) + + --[[ + Add ban transaction + ]] transactions[k] = MSync.DBServer:prepare( [[ INSERT INTO `tbl_mbsync` (user_id, admin_id, reason, date_unix, length_unix, server_group) VALUES ( @@ -703,6 +726,7 @@ MSync.modules[info.ModuleIdentifier].init = function( transaction ) banTransaction:addQuery(transactions[k]) MSync.log(MSYNC_DBG_INFO, "[MBSync] Imported ban for SteamID: " .. k) + MSync.log(MSYNC_DBG_DEBUG, "[MBSync] Import Bans: added create ban transaction for: " .. k) end banTransaction.onSuccess = function() From a73d88e0a790fea85a52a59851370078a79fdf3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Gr=C3=BCttemeier?= Date: Fri, 23 Oct 2020 23:24:47 +0200 Subject: [PATCH 2/4] Fixed debug message Fix debug message from MSync.MBSync.msg, which would not show debug data accordingly --- lua/msync/server/modules/sv_mbsync.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/msync/server/modules/sv_mbsync.lua b/lua/msync/server/modules/sv_mbsync.lua index fbce489..6192801 100644 --- a/lua/msync/server/modules/sv_mbsync.lua +++ b/lua/msync/server/modules/sv_mbsync.lua @@ -830,7 +830,7 @@ MSync.modules[info.ModuleIdentifier].net = function() ]] util.AddNetworkString("msync."..info.ModuleIdentifier..".sendMessage") MSync.modules[info.ModuleIdentifier].msg = function(ply, content, msgType) - MSync.log(MSYNC_DBG_DEBUG, "[MBSync] Exec: MBSync.msg Param.: $ply \"$content\" $msgType") + MSync.log(MSYNC_DBG_DEBUG, MSync.formatString("[MBSync] Exec: MBSync.msg Param.: $ply \"$content\" $msgType",{['ply'] = ply, ['content'] = content, ['msgType'] = msgType})) if type(ply) == "string" and not (ply == "STEAM_0:0:0") then ply = player.GetBySteamID( ply ) end From 0710f8c82358e5096628b7aef01d160e9fca9d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Gr=C3=BCttemeier?= Date: Fri, 23 Oct 2020 23:25:31 +0200 Subject: [PATCH 3/4] Fix error with addUserID Fix a error with MSync.addUSerID which would cause a error if the nickname variable was empty --- lua/msync/server/sv_mysql.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/msync/server/sv_mysql.lua b/lua/msync/server/sv_mysql.lua index 3b1db2b..f8c13e1 100644 --- a/lua/msync/server/sv_mysql.lua +++ b/lua/msync/server/sv_mysql.lua @@ -148,7 +148,7 @@ end Returns: nothing ]] function MSync.mysql.addUserID(steamid, nickname) - MSync.log(MSYNC_DBG_DEBUG, "Exec: addUserID. Param.: " .. steamid .. " " .. nickname) + MSync.log(MSYNC_DBG_DEBUG, "Exec: addUserID. Param.: " .. steamid .. " " .. (nickname or "")) if not MSync.DBServer then MSync.log(MSYNC_DBG_DEBUG, "No Database connected yet. Please connect to a Database to be able to create users."); return end; if not string.match( steamid, "^STEAM_[0-1]:[0-1]:[0-9]+$" ) then return end; From df771dbf6ecc2268459151fb8632ed0935fe9d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Gr=C3=BCttemeier?= Date: Wed, 4 Nov 2020 19:25:55 +0100 Subject: [PATCH 4/4] ModuleLoaded hook Add a hook for module loading to prevent error messages from Modules executing actions before the initial database creation has finished --- lua/msync/server/modules/sv_mbsync.lua | 27 +++++++++++++++----------- lua/msync/server/sv_modules.lua | 3 +++ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lua/msync/server/modules/sv_mbsync.lua b/lua/msync/server/modules/sv_mbsync.lua index 6192801..0b19f0f 100644 --- a/lua/msync/server/modules/sv_mbsync.lua +++ b/lua/msync/server/modules/sv_mbsync.lua @@ -810,10 +810,6 @@ MSync.modules[info.ModuleIdentifier].init = function( transaction ) ]] MSync.modules[info.ModuleIdentifier].loadSettings() - if not MSync.modules[info.ModuleIdentifier].banTable then - MSync.log(MSYNC_DBG_WARNING, "[MBSync] Ban table not found yet, requesting now") - MSync.modules[info.ModuleIdentifier].getActiveBans() - end end --[[ @@ -1395,13 +1391,6 @@ end Define hooks your module is listening on e.g. PlayerDisconnect ]] MSync.modules[info.ModuleIdentifier].hooks = function() - --[[ - This hook starts the timers for the asynchronous ban data loading and the check if one of the online players has been banned - ]] - timer.Create("msync."..info.ModuleIdentifier..".getActiveBans", MSync.modules[info.ModuleIdentifier].settings.syncDelay, 0, function() - MSync.modules[info.ModuleIdentifier].getActiveBans() - end) - MSync.modules[info.ModuleIdentifier].getActiveBans() hook.Add("CheckPassword", "msync."..info.ModuleIdentifier..".banCheck", function( steamid64 ) MSync.log(MSYNC_DBG_DEBUG, "[MBSync] Checking ban status for \"" .. steamid64 .. "\"") @@ -1525,6 +1514,22 @@ MSync.modules[info.ModuleIdentifier].hooks = function() end MSync.modules[info.ModuleIdentifier].unBanUser(steamid, admin_id) end) + + hook.Add("MSyncModuleLoaded", "msync.mbsync.loadData", function( msync_module ) + if (not msync_module or msync_module == info.ModuleIdentifier) and not MSync.modules[info.ModuleIdentifier].banTable then + if not MSync.modules[info.ModuleIdentifier].banTable then + MSync.log(MSYNC_DBG_WARNING, "[MBSync] Ban table not found yet, requesting now") + MSync.modules[info.ModuleIdentifier].getActiveBans() + end + + --[[ + Start timer to asynchroniously resync data + ]] + timer.Create("msync."..info.ModuleIdentifier..".getActiveBans", MSync.modules[info.ModuleIdentifier].settings.syncDelay, 0, function() + MSync.modules[info.ModuleIdentifier].getActiveBans() + end) + end + end) end --[[ diff --git a/lua/msync/server/sv_modules.lua b/lua/msync/server/sv_modules.lua index 17ac4e9..cc9de81 100644 --- a/lua/msync/server/sv_modules.lua +++ b/lua/msync/server/sv_modules.lua @@ -45,6 +45,7 @@ function MSync.initModules() function initTransaction.onSuccess() MSync.log(MSYNC_DBG_INFO, "Module querys have been completed successfully") + hook.Call("MSyncModuleLoaded", nil, nil) MSync.mysql.dbstatus = true end @@ -77,6 +78,7 @@ function MSync.loadModule(path) function initTransaction.onSuccess() MSync.log(MSYNC_DBG_INFO, "Module query has been completed successfully") + hook.Call("MSyncModuleLoaded", nil, info.ModuleIdentifier) --MSync.mysql[info.ModuleIdentifier].dbstatus = true end @@ -109,6 +111,7 @@ function MSync.enableModule( module ) function initTransaction.onSuccess() MSync.log(MSYNC_DBG_INFO, "["..MSync.modules[module]["info"]["Name"].."] Module loaded") MSync.net.sendModuleEnable( module ) + hook.Call("MSyncModuleLoaded", nil, module) --MSync.mysql[module].dbstatus = true end