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)