From d34ca6497081923e4a0fc073db8bfd65a631d30f Mon Sep 17 00:00:00 2001 From: Dawid Bepierszcz <41084667+daffyyyy@users.noreply.github.com> Date: Wed, 21 May 2025 00:38:54 +0200 Subject: [PATCH] 1.7.7-alpha-fix - Added missing migration - Added missing ignoredips --- CS2-SimpleAdmin/CS2-SimpleAdmin.csproj | 3 +++ .../012_AddUpdatedAtColumnToSaBansTable.sql | 1 + CS2-SimpleAdmin/Managers/CacheManager.cs | 12 ++++++++---- 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 CS2-SimpleAdmin/Database/Migrations/012_AddUpdatedAtColumnToSaBansTable.sql diff --git a/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj b/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj index e3ddb47..85c3e89 100644 --- a/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj +++ b/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj @@ -26,6 +26,9 @@ PreserveNewest + + PreserveNewest + diff --git a/CS2-SimpleAdmin/Database/Migrations/012_AddUpdatedAtColumnToSaBansTable.sql b/CS2-SimpleAdmin/Database/Migrations/012_AddUpdatedAtColumnToSaBansTable.sql new file mode 100644 index 0000000..bc306e6 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/012_AddUpdatedAtColumnToSaBansTable.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_bans` ADD COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `status`; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Managers/CacheManager.cs b/CS2-SimpleAdmin/Managers/CacheManager.cs index c8298d8..009635b 100644 --- a/CS2-SimpleAdmin/Managers/CacheManager.cs +++ b/CS2-SimpleAdmin/Managers/CacheManager.cs @@ -9,6 +9,7 @@ internal class CacheManager { private readonly ConcurrentDictionary _banCache = new(); private readonly ConcurrentDictionary ips, DateTime used_at)> _playerIpsCache = new(); + private readonly HashSet _cachedIgnoredIps = [..CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps]; private DateTime _lastUpdateTime = DateTime.MinValue; private bool _isInitialized; @@ -132,7 +133,8 @@ internal class CacheManager return _banCache.Values.Any(b => b.Status == "ACTIVE" && !string.IsNullOrEmpty(b.PlayerIp) && - b.PlayerIp.Equals(ipAddress, StringComparison.OrdinalIgnoreCase)); + b.PlayerIp.Equals(ipAddress, StringComparison.OrdinalIgnoreCase) && + !_cachedIgnoredIps.Contains(ipAddress)); } public bool IsPlayerBanned(string? steamId, string? ipAddress) => @@ -143,7 +145,8 @@ internal class CacheManager b.PlayerSteamId.Equals(steamId, StringComparison.OrdinalIgnoreCase)) || (ipAddress != null && b.PlayerIp != null && - b.PlayerIp.Equals(ipAddress, StringComparison.OrdinalIgnoreCase)) + b.PlayerIp.Equals(ipAddress, StringComparison.OrdinalIgnoreCase) && + !_cachedIgnoredIps.Contains(ipAddress)) )); public bool IsPlayerOrAnyIpBanned(ulong steamId) @@ -155,8 +158,9 @@ internal class CacheManager { return true; } - - return _playerIpsCache.TryGetValue(steamId, out var ipList) && ipList.ips.Any(IsIpBanned); + + return _playerIpsCache.TryGetValue(steamId, out var ipList) && ipList.ips.Any(ip => + !_cachedIgnoredIps.Contains(ip) && IsIpBanned(ip)); } public bool HasIpForPlayer(ulong steamId, string ipAddress)