Merge branch 'daffyyyy:main' into main

This commit is contained in:
crashzk 2025-12-14 21:00:16 -03:00 • committed by GitHub
commit c8f59c01f2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 33 additions and 37 deletions

View file

@ -22,7 +22,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
public override string ModuleAuthor => "daffyy"; public override string ModuleAuthor => "daffyy";
public override string ModuleVersion => "1.7.8-beta-7"; public override string ModuleVersion => "1.7.8-beta-8";
public override void Load(bool hotReload) public override void Load(bool hotReload)
{ {

View file

@ -620,47 +620,40 @@ internal class CacheManager: IDisposable
if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 || string.IsNullOrEmpty(ipAddress)) if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 || string.IsNullOrEmpty(ipAddress))
return false; return false;
if (!_playerIpsCache.TryGetValue(steamId, out var ipData)) if (!IpHelper.TryConvertIpToUint(ipAddress, out var ipUInt))
return false; return false;
var cutoff = Time.ActualDateTime().AddDays(-CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans); if (_cachedIgnoredIps.Contains(ipUInt))
return false;
if (!_ipIndex.TryGetValue(ipUInt, out var ipBanRecords))
return false;
var ipBan = ipBanRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE);
if (ipBan == null)
return false;
if (!_banCache.TryGetValue(ipBan.Id, out var cachedIpBan) || cachedIpBan.StatusEnum != BanStatus.ACTIVE)
return false;
var expireOldIpBans = CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans;
if (expireOldIpBans > 0)
{
var cutoff = Time.ActualDateTime().AddDays(-expireOldIpBans);
if (ipBan.Created < cutoff)
return false;
}
var unknownName = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown"; var unknownName = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown";
if (ipAddress != null && IpHelper.TryConvertIpToUint(ipAddress, out var ipAsUint)) if (string.IsNullOrEmpty(ipBan.PlayerName))
{ ipBan.PlayerName = playerName;
if (!_cachedIgnoredIps.Contains(ipAsUint))
{
ipData.Add(new IpRecord(ipAsUint, Time.ActualDateTime().AddSeconds(-2), unknownName));
}
}
foreach (var ipRecord in ipData) ipBan.PlayerSteamId ??= steamId;
{
if (ipRecord.UsedAt < cutoff || _cachedIgnoredIps.Contains(ipRecord.Ip))
continue;
if (!_ipIndex.TryGetValue(ipRecord.Ip, out var banRecords)) _ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress));
continue;
var activeBan = banRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE); return true;
if (activeBan == null)
continue;
// Double-check the ban is still active in cache (handle race conditions)
if (!_banCache.TryGetValue(activeBan.Id, out var cachedBan) || cachedBan.StatusEnum != BanStatus.ACTIVE)
continue;
if (string.IsNullOrEmpty(activeBan.PlayerName))
activeBan.PlayerName = unknownName;
activeBan.PlayerSteamId ??= steamId;
_ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress));
return true;
}
return false;
} }
/// <summary> /// <summary>

View file

@ -24,7 +24,10 @@ public record BanRecord
[Column("player_ip")] [Column("player_ip")]
public string? PlayerIp { get; set; } public string? PlayerIp { get; set; }
[Column("created")]
public DateTime Created { get; init; }
[Column("status")] [Column("status")]
public required string Status { get; init; } public required string Status { get; init; }

View file

@ -1 +1 @@
1.7.8-beta-7 1.7.8-beta-8