Skip to content

Commit 6659625

Browse files
committed
Update ban logic and StatusBlocker plugin version
Refactored IP ban checking logic in CacheManager for improved accuracy and maintainability. Replaced StatusBlocker plugin binaries with v1.1.3 for both Linux and Windows. EOL, no more new features
1 parent c2e8b4a commit 6659625

File tree

8 files changed

+29
-33
lines changed

8 files changed

+29
-33
lines changed

CS2-SimpleAdmin/CS2-SimpleAdmin.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
2222
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
2323
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
2424
public override string ModuleAuthor => "daffyy";
25-
public override string ModuleVersion => "1.7.8-beta-7";
25+
public override string ModuleVersion => "1.7.8-beta-8";
2626

2727
public override void Load(bool hotReload)
2828
{

CS2-SimpleAdmin/Managers/CacheManager.cs

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -620,47 +620,40 @@ public bool IsPlayerOrAnyIpBanned(string playerName, ulong steamId, string? ipAd
620620
if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 || string.IsNullOrEmpty(ipAddress))
621621
return false;
622622

623-
if (!_playerIpsCache.TryGetValue(steamId, out var ipData))
623+
if (!IpHelper.TryConvertIpToUint(ipAddress, out var ipUInt))
624624
return false;
625625

626-
var cutoff = Time.ActualDateTime().AddDays(-CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans);
627-
var unknownName = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
628-
629-
if (ipAddress != null && IpHelper.TryConvertIpToUint(ipAddress, out var ipAsUint))
630-
{
631-
if (!_cachedIgnoredIps.Contains(ipAsUint))
632-
{
633-
ipData.Add(new IpRecord(ipAsUint, Time.ActualDateTime().AddSeconds(-2), unknownName));
634-
}
635-
}
626+
if (_cachedIgnoredIps.Contains(ipUInt))
627+
return false;
636628

637-
foreach (var ipRecord in ipData)
638-
{
639-
if (ipRecord.UsedAt < cutoff || _cachedIgnoredIps.Contains(ipRecord.Ip))
640-
continue;
629+
if (!_ipIndex.TryGetValue(ipUInt, out var ipBanRecords))
630+
return false;
641631

642-
if (!_ipIndex.TryGetValue(ipRecord.Ip, out var banRecords))
643-
continue;
632+
var ipBan = ipBanRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE);
633+
if (ipBan == null)
634+
return false;
644635

645-
var activeBan = banRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE);
646-
if (activeBan == null)
647-
continue;
636+
if (!_banCache.TryGetValue(ipBan.Id, out var cachedIpBan) || cachedIpBan.StatusEnum != BanStatus.ACTIVE)
637+
return false;
648638

649-
// Double-check the ban is still active in cache (handle race conditions)
650-
if (!_banCache.TryGetValue(activeBan.Id, out var cachedBan) || cachedBan.StatusEnum != BanStatus.ACTIVE)
651-
continue;
639+
var expireOldIpBans = CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans;
640+
if (expireOldIpBans > 0)
641+
{
642+
var cutoff = Time.ActualDateTime().AddDays(-expireOldIpBans);
643+
if (ipBan.Created < cutoff)
644+
return false;
645+
}
652646

653-
if (string.IsNullOrEmpty(activeBan.PlayerName))
654-
activeBan.PlayerName = unknownName;
647+
var unknownName = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
655648

656-
activeBan.PlayerSteamId ??= steamId;
649+
if (string.IsNullOrEmpty(ipBan.PlayerName))
650+
ipBan.PlayerName = playerName;
657651

658-
_ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress));
652+
ipBan.PlayerSteamId ??= steamId;
659653

660-
return true;
661-
}
654+
_ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress));
662655

663-
return false;
656+
return true;
664657
}
665658

666659
/// <summary>

CS2-SimpleAdmin/Models/BanRecord.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ public record BanRecord
2424

2525
[Column("player_ip")]
2626
public string? PlayerIp { get; set; }
27-
27+
28+
[Column("created")]
29+
public DateTime Created { get; init; }
30+
2831
[Column("status")]
2932
public required string Status { get; init; }
3033

CS2-SimpleAdmin/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.7.8-beta-7
1+
1.7.8-beta-8
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)