From 450a7804c660699b8d6e4a49993404328a52f29c Mon Sep 17 00:00:00 2001 From: Dawid Bepierszcz <41084667+daffyyyy@users.noreply.github.com> Date: Thu, 25 Jan 2024 01:00:31 +0100 Subject: [PATCH] 1.2.8a - Small fixes --- AdminSQLManager.cs | 10 ++++++++++ BanManager.cs | 21 ++++++++++++++++++--- CS2-SimpleAdmin.cs | 25 ++++++++++++++++--------- Events.cs | 39 ++++++++++++++++++--------------------- MuteManager.cs | 12 ++++++++++++ 5 files changed, 74 insertions(+), 33 deletions(-) diff --git a/AdminSQLManager.cs b/AdminSQLManager.cs index 91782e5..0c737b6 100644 --- a/AdminSQLManager.cs +++ b/AdminSQLManager.cs @@ -147,6 +147,8 @@ namespace CS2_SimpleAdmin return flagsToCache.Cast().ToList(); } */ + await connection.CloseAsync(); + return filteredFlagsWithImmunity; //return filteredFlags.Cast().ToList(); } @@ -208,6 +210,8 @@ namespace CS2_SimpleAdmin filteredFlagsWithImmunity.Add((steamId, flagsValue.Split(',').ToList(), immunityValue, ends)); } + await connection.CloseAsync(); + return filteredFlagsWithImmunity; } @@ -259,6 +263,8 @@ namespace CS2_SimpleAdmin } await connection.ExecuteAsync(sql, new { PlayerSteamID = playerSteamId, ServerId = CS2_SimpleAdmin.ServerId }); + + await connection.CloseAsync(); } public async Task AddAdminBySteamId(string playerSteamId, string playerName, string flags, int immunity = 0, int time = 0, bool globalAdmin = false) @@ -292,6 +298,8 @@ namespace CS2_SimpleAdmin created = now, serverid = serverId }); + + await connection.CloseAsync(); } public async Task DeleteOldAdmins() @@ -301,6 +309,8 @@ namespace CS2_SimpleAdmin string sql = "DELETE FROM sa_admins WHERE ends IS NOT NULL AND ends <= @CurrentTime"; await connection.ExecuteAsync(sql, new { CurrentTime = DateTime.Now }); + + await connection.CloseAsync(); } } } \ No newline at end of file diff --git a/BanManager.cs b/BanManager.cs index 969c903..a11f949 100644 --- a/BanManager.cs +++ b/BanManager.cs @@ -6,10 +6,12 @@ namespace CS2_SimpleAdmin internal class BanManager { private readonly MySqlConnection _dbConnection; + private readonly CS2_SimpleAdminConfig _config; - public BanManager(string connectionString) + public BanManager(string connectionString, CS2_SimpleAdminConfig config) { _dbConnection = new MySqlConnection(connectionString); + _config = config; } public async Task BanPlayer(PlayerInfo player, PlayerInfo issuer, string reason, int time = 0) @@ -23,12 +25,11 @@ namespace CS2_SimpleAdmin var sql = "INSERT INTO `sa_bans` (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " + "VALUES (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)"; - CS2_SimpleAdminConfig config = new CS2_SimpleAdminConfig(); await connection.ExecuteAsync(sql, new { playerSteamid = player.SteamId, playerName = player.Name, - playerIp = config.BanType == 1 ? player.IpAddress : null, + playerIp = _config.BanType == 1 ? player.IpAddress : null, adminSteamid = issuer.SteamId == null ? "Console" : issuer.SteamId, adminName = issuer.Name == null ? "Console" : issuer.Name, banReason = reason, @@ -37,6 +38,8 @@ namespace CS2_SimpleAdmin created = now, serverid = CS2_SimpleAdmin.ServerId }); + + await connection.CloseAsync(); } public async Task AddBanBySteamid(string playerSteamId, PlayerInfo issuer, string reason, int time = 0) @@ -63,6 +66,8 @@ namespace CS2_SimpleAdmin created = now, serverid = CS2_SimpleAdmin.ServerId }); + + await connection.CloseAsync(); } public async Task AddBanByIp(string playerIp, PlayerInfo issuer, string reason, int time = 0) @@ -89,6 +94,8 @@ namespace CS2_SimpleAdmin created = now, serverid = CS2_SimpleAdmin.ServerId }); + + await connection.CloseAsync(); } public async Task IsPlayerBanned(PlayerInfo player) @@ -111,6 +118,8 @@ namespace CS2_SimpleAdmin banCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = player.SteamId, PlayerIP = DBNull.Value, CurrentTime = now }); } + await connection.CloseAsync(); + return banCount > 0; } @@ -131,6 +140,8 @@ namespace CS2_SimpleAdmin banCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = player.SteamId, PlayerIP = DBNull.Value }); } + await connection.CloseAsync(); + return banCount; } @@ -146,6 +157,8 @@ namespace CS2_SimpleAdmin string sqlUnban = "UPDATE sa_bans SET status = 'UNBANNED' WHERE player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern AND status = 'ACTIVE'"; await connection.ExecuteAsync(sqlUnban, new { pattern = playerPattern }); + + await connection.CloseAsync(); } public async Task ExpireOldBans() @@ -155,6 +168,8 @@ namespace CS2_SimpleAdmin string sql = "UPDATE sa_bans SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime"; await connection.ExecuteAsync(sql, new { CurrentTime = DateTime.Now }); + + await connection.CloseAsync(); } } } \ No newline at end of file diff --git a/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin.cs index 448fd75..be32f0f 100644 --- a/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin.cs @@ -24,7 +24,6 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig gaggedPlayers = new ConcurrentBag(); //public static ConcurrentBag mutedPlayers = new ConcurrentBag(); - public static List loadedPlayers = new List(); public static Dictionary voteAnswers = new Dictionary(); public static HashSet godPlayers = new HashSet(); public static List silentPlayers = new List(); @@ -303,7 +302,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig playersToTarget = targets!.Players.Where(player => caller!.CanTarget(player) && player != null && player.IsValid && !player.IsBot && !player.IsHLTV).ToList(); - BanManager _banManager = new(dbConnectionString); + BanManager _banManager = new(dbConnectionString, Config); MuteManager _muteManager = new(dbConnectionString); playersToTarget.ForEach(player => @@ -435,7 +434,11 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig= 2) { @@ -1091,7 +1094,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig { - BanManager _banManager = new(dbConnectionString); + BanManager _banManager = new(dbConnectionString, Config); await _banManager.AddBanBySteamid(steamid, adminInfo, reason, time); }); @@ -1309,7 +1316,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig { - BanManager _banManager = new(dbConnectionString); + BanManager _banManager = new(dbConnectionString, Config); await _banManager.AddBanByIp(ipAddress, adminInfo, reason, time); }); @@ -1328,7 +1335,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig { - BanManager _banManager = new(dbConnectionString); + BanManager _banManager = new(dbConnectionString, Config); bool isBanned = await _banManager.IsPlayerBanned(playerInfo); MuteManager _muteManager = new(dbConnectionString); @@ -360,7 +360,7 @@ public partial class CS2_SimpleAdmin Task.Run(async () => { - BanManager _banManager = new(dbConnectionString); + BanManager _banManager = new(dbConnectionString, Config); bool isBanned = await _banManager.IsPlayerBanned(playerInfo); MuteManager _muteManager = new(dbConnectionString); @@ -501,9 +501,6 @@ public partial class CS2_SimpleAdmin } } */ - - if (player.UserId != null && !loadedPlayers.Contains((ushort)player.UserId)) - loadedPlayers.Add((ushort)player.UserId); }); }); } @@ -542,9 +539,6 @@ public partial class CS2_SimpleAdmin godPlayers.Remove((ushort)player.UserId); } - if (player.UserId != null && loadedPlayers.Contains((ushort)player.UserId)) - loadedPlayers.Remove((ushort)player.UserId); - if (player.AuthorizedSteamID != null && AdminSQLManager._adminCacheSet.Contains(player.AuthorizedSteamID)) { if (AdminSQLManager._adminCacheTimestamps != null && AdminSQLManager._adminCacheTimestamps.TryGetValue(player.AuthorizedSteamID, out DateTime? expirationTime) && expirationTime.HasValue && expirationTime.Value <= DateTime.Now) @@ -565,7 +559,7 @@ public partial class CS2_SimpleAdmin AddTimer(60.0f, bannedPlayers.Clear, CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT | CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); AddTimer(120.0f, () => { - BanManager _banManager = new(dbConnectionString); + BanManager _banManager = new(dbConnectionString, Config); MuteManager _muteManager = new(dbConnectionString); _ = _banManager.ExpireOldBans(); _ = _muteManager.ExpireOldMutes(); @@ -578,23 +572,26 @@ public partial class CS2_SimpleAdmin TagsDetected = true; } - using (var connection = new MySqlConnection(dbConnectionString)) + AddTimer(1.0f, () => { - connection.Open(); + using (var connection = new MySqlConnection(dbConnectionString)) + { + connection.Open(); - connection.Execute( - "INSERT INTO `sa_servers` (address, hostname) VALUES (@address, @hostname) " + - "ON DUPLICATE KEY UPDATE hostname = @hostname", - new { address = $"{ConVar.Find("ip")!.StringValue}:{ConVar.Find("hostport")!.GetPrimitiveValue()}", hostname = ConVar.Find("hostname")!.StringValue }); + connection.Execute( + "INSERT INTO `sa_servers` (address, hostname) VALUES (@address, @hostname) " + + "ON DUPLICATE KEY UPDATE hostname = @hostname", + new { address = $"{ConVar.Find("ip")!.StringValue}:{ConVar.Find("hostport")!.GetPrimitiveValue()}", hostname = ConVar.Find("hostname")!.StringValue }); - int? serverId = connection.ExecuteScalar( - "SELECT `id` FROM `sa_servers` WHERE `address` = @address", - new { address = $"{ConVar.Find("ip")!.StringValue}:{ConVar.Find("hostport")!.GetPrimitiveValue()}" }); + int? serverId = connection.ExecuteScalar( + "SELECT `id` FROM `sa_servers` WHERE `address` = @address", + new { address = $"{ConVar.Find("ip")!.StringValue}:{ConVar.Find("hostport")!.GetPrimitiveValue()}" }); - ServerId = serverId; + ServerId = serverId; - connection.Close(); - } + connection.Close(); + } + }); _ = _adminManager.GiveAllFlags(); } diff --git a/MuteManager.cs b/MuteManager.cs index 519ce27..6c3a1fe 100644 --- a/MuteManager.cs +++ b/MuteManager.cs @@ -44,6 +44,8 @@ namespace CS2_SimpleAdmin type = muteType, serverid = CS2_SimpleAdmin.ServerId }); + + await connection.CloseAsync(); } public async Task AddMuteBySteamid(string playerSteamId, PlayerInfo issuer, string reason, int time = 0, int type = 0) @@ -75,6 +77,8 @@ namespace CS2_SimpleAdmin type = muteType, serverid = CS2_SimpleAdmin.ServerId }); + + await connection.CloseAsync(); } public async Task> IsPlayerMuted(string steamId) @@ -87,6 +91,8 @@ namespace CS2_SimpleAdmin string sql = "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime)"; var activeMutes = (await connection.QueryAsync(sql, new { PlayerSteamID = steamId, CurrentTime = now })).ToList(); + await connection.CloseAsync(); + return activeMutes; } @@ -100,6 +106,8 @@ namespace CS2_SimpleAdmin muteCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = steamId }); + await connection.CloseAsync(); + return muteCount; } @@ -134,6 +142,8 @@ namespace CS2_SimpleAdmin string sqlUnban = "UPDATE sa_mutes SET status = 'UNMUTED' WHERE (player_steamid = @pattern OR player_name = @pattern) AND type = @muteType AND status = 'ACTIVE'"; await connection.ExecuteAsync(sqlUnban, new { pattern = playerPattern, muteType }); + + await connection.CloseAsync(); } public async Task ExpireOldMutes() @@ -143,6 +153,8 @@ namespace CS2_SimpleAdmin string sql = "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime"; await connection.ExecuteAsync(sql, new { CurrentTime = DateTime.Now }); + + await connection.CloseAsync(); } public async Task CheckMute(PlayerInfo player)