diff --git a/AdminSQLManager.cs b/AdminSQLManager.cs index 0c737b6..364fcac 100644 --- a/AdminSQLManager.cs +++ b/AdminSQLManager.cs @@ -1,20 +1,19 @@ using CounterStrikeSharp.API.Modules.Entities; using Dapper; -using MySqlConnector; namespace CS2_SimpleAdmin { - internal class AdminSQLManager + public class AdminSQLManager { - private readonly MySqlConnection _dbConnection; + private readonly Database _database; // Unused for now //public static readonly ConcurrentDictionary> _adminCache = new ConcurrentDictionary>(); public static readonly HashSet _adminCacheSet = new HashSet(); public static readonly Dictionary _adminCacheTimestamps = new Dictionary(); - public AdminSQLManager(string connectionString) + public AdminSQLManager(Database database) { - _dbConnection = new MySqlConnection(connectionString); + _database = database; } /* @@ -26,7 +25,7 @@ namespace CS2_SimpleAdmin } else { - await using var connection = _dbConnection; + await using var connection = _database.GetConnection(); await connection.OpenAsync(); DateTime now = DateTime.Now; @@ -48,16 +47,9 @@ namespace CS2_SimpleAdmin public async Task, int)>> GetAdminFlags(string steamId) { - /* Unused for now - if (_adminCache.TryGetValue(steamId, out ConcurrentBag? cachedFlags)) - { - return cachedFlags.ToList(); - } - */ DateTime now = DateTime.Now; - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); string sql = "SELECT flags, immunity, ends FROM sa_admins WHERE player_steamid = @PlayerSteamID AND (ends IS NULL OR ends > @CurrentTime) AND (server_id IS NULL OR server_id = @serverid)"; List? activeFlags = (await connection.QueryAsync(sql, new { PlayerSteamID = steamId, CurrentTime = now, serverid = CS2_SimpleAdmin.ServerId }))?.ToList(); @@ -147,8 +139,6 @@ namespace CS2_SimpleAdmin return flagsToCache.Cast().ToList(); } */ - await connection.CloseAsync(); - return filteredFlagsWithImmunity; //return filteredFlags.Cast().ToList(); } @@ -157,8 +147,7 @@ namespace CS2_SimpleAdmin { DateTime now = DateTime.Now; - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); string sql = "SELECT player_steamid, flags, immunity, ends FROM sa_admins WHERE (ends IS NULL OR ends > @CurrentTime) AND (server_id IS NULL OR server_id = @serverid)"; List? activeFlags = (await connection.QueryAsync(sql, new { CurrentTime = now, serverid = CS2_SimpleAdmin.ServerId }))?.ToList(); @@ -210,8 +199,6 @@ namespace CS2_SimpleAdmin filteredFlagsWithImmunity.Add((steamId, flagsValue.Split(',').ToList(), immunityValue, ends)); } - await connection.CloseAsync(); - return filteredFlagsWithImmunity; } @@ -248,8 +235,7 @@ namespace CS2_SimpleAdmin //_adminCache.TryRemove(playerSteamId, out _); - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); string sql = ""; @@ -263,8 +249,6 @@ 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) @@ -280,8 +264,7 @@ namespace CS2_SimpleAdmin else futureTime = null; - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); var sql = "INSERT INTO `sa_admins` (`player_steamid`, `player_name`, `flags`, `immunity`, `ends`, `created`, `server_id`) " + "VALUES (@playerSteamid, @playerName, @flags, @immunity, @ends, @created, @serverid)"; @@ -298,19 +281,14 @@ namespace CS2_SimpleAdmin created = now, serverid = serverId }); - - await connection.CloseAsync(); } public async Task DeleteOldAdmins() { - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); 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 a11f949..67901b0 100644 --- a/BanManager.cs +++ b/BanManager.cs @@ -1,16 +1,15 @@ using Dapper; -using MySqlConnector; namespace CS2_SimpleAdmin { internal class BanManager { - private readonly MySqlConnection _dbConnection; + private readonly Database _database; private readonly CS2_SimpleAdminConfig _config; - public BanManager(string connectionString, CS2_SimpleAdminConfig config) + public BanManager(Database database, CS2_SimpleAdminConfig config) { - _dbConnection = new MySqlConnection(connectionString); + _database = database; _config = config; } @@ -19,8 +18,7 @@ namespace CS2_SimpleAdmin DateTime now = DateTime.Now; DateTime futureTime = now.AddMinutes(time); - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); 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)"; @@ -38,8 +36,6 @@ 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) @@ -49,8 +45,7 @@ namespace CS2_SimpleAdmin DateTime now = DateTime.Now; DateTime futureTime = now.AddMinutes(time); - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); var sql = "INSERT INTO `sa_bans` (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " + "VALUES (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)"; @@ -66,8 +61,6 @@ 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) @@ -77,8 +70,7 @@ namespace CS2_SimpleAdmin DateTime now = DateTime.Now; DateTime futureTime = now.AddMinutes(time); - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); var sql = "INSERT INTO `sa_bans` (`player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " + "VALUES (@playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)"; @@ -94,8 +86,6 @@ namespace CS2_SimpleAdmin created = now, serverid = CS2_SimpleAdmin.ServerId }); - - await connection.CloseAsync(); } public async Task IsPlayerBanned(PlayerInfo player) @@ -106,8 +96,7 @@ namespace CS2_SimpleAdmin int banCount; - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); if (!string.IsNullOrEmpty(player.IpAddress)) { @@ -118,8 +107,6 @@ namespace CS2_SimpleAdmin banCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = player.SteamId, PlayerIP = DBNull.Value, CurrentTime = now }); } - await connection.CloseAsync(); - return banCount > 0; } @@ -128,8 +115,7 @@ namespace CS2_SimpleAdmin string sql = "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)"; int banCount; - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); if (!string.IsNullOrEmpty(player.IpAddress)) { @@ -140,8 +126,6 @@ namespace CS2_SimpleAdmin banCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = player.SteamId, PlayerIP = DBNull.Value }); } - await connection.CloseAsync(); - return banCount; } @@ -152,24 +136,18 @@ namespace CS2_SimpleAdmin return; } - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); 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() { - await using var connection = _dbConnection; - await connection.OpenAsync(); + await using var connection = _database.GetConnection(); 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 bfdffb2..2c54f78 100644 --- a/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin.cs @@ -11,12 +11,18 @@ using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Menu; using CounterStrikeSharp.API.Modules.Utils; +using Dapper; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using MySqlConnector; +<<<<<<< Updated upstream using System; using System.Runtime.InteropServices; +======= +using Newtonsoft.Json; +>>>>>>> Stashed changes using System.Collections.Concurrent; +using System.Runtime.InteropServices; using System.Text; namespace CS2_SimpleAdmin; @@ -36,14 +42,22 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig "CS2-SimpleAdmin"; - public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; - public override string ModuleAuthor => "daffyy"; - public override string ModuleVersion => "1.2.9d"; + internal Database? _database; public static MemoryFunctionVoid CBasePlayerController_SetPawnFunc = new( RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x81\xEC\xC8\x00\x00\x00" : "\\x44\\x88\\x4C\\x24\\x2A\\x55\\x57" ); + public override string ModuleName => "CS2-SimpleAdmin"; + public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; + public override string ModuleAuthor => "daffyy"; + public override string ModuleVersion => "1.2.9a"; + +<<<<<<< Updated upstream + public static MemoryFunctionVoid CBasePlayerController_SetPawnFunc = new( + RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x49\x89\xFC\x53\x48\x89\xF3\x48\x81\xEC\xC8\x00\x00\x00" : "\\x44\\x88\\x4C\\x24\\x2A\\x55\\x57" + ); +======= +>>>>>>> Stashed changes public CS2_SimpleAdminConfig Config { get; set; } = new(); @@ -57,7 +71,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig @@ -239,7 +262,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig