mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-09-27 20:17:04 +02:00
1.6.3b
```diff + Small code cleanup + FIXED ban check on connect ```
This commit is contained in:
parent
d0207f3d0b
commit
9820d74095
8 changed files with 109 additions and 103 deletions
|
|
@ -111,7 +111,7 @@ internal class BanManager(Database.Database? database)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#if DEBUG
|
||||
if (CS2_SimpleAdmin._logger != null)
|
||||
CS2_SimpleAdmin._logger.LogCritical($"IsPlayerBanned for {player.Name}");
|
||||
|
|
@ -124,40 +124,53 @@ internal class BanManager(Database.Database? database)
|
|||
try
|
||||
{
|
||||
var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """
|
||||
SELECT COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE'
|
||||
AND (duration = 0 OR ends > @CurrentTime)
|
||||
), 0) AS BanCount
|
||||
+ COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid
|
||||
WHERE sa_bans.status = 'ACTIVE'
|
||||
AND sa_players_ips.address = @PlayerIP
|
||||
AND (SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime)) = 0
|
||||
), 0) AS TotalBanCount;
|
||||
SELECT COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE'
|
||||
AND (duration = 0 OR ends > @CurrentTime)
|
||||
), 0)
|
||||
+
|
||||
COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid
|
||||
WHERE sa_bans.status = 'ACTIVE'
|
||||
AND sa_players_ips.address = @PlayerIP
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sa_bans
|
||||
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE'
|
||||
AND (duration = 0 OR ends > @CurrentTime)
|
||||
)
|
||||
), 0) AS TotalBanCount;
|
||||
""" : """
|
||||
SELECT COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE'
|
||||
AND (duration = 0 OR ends > @CurrentTime)
|
||||
AND server_id = @ServerId
|
||||
), 0) AS BanCount
|
||||
+ COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid
|
||||
WHERE sa_bans.status = 'ACTIVE'
|
||||
AND sa_players_ips.address = @PlayerIP
|
||||
AND (SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime) AND server_id = @ServerId) = 0
|
||||
), 0) AS TotalBanCount;
|
||||
SELECT COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE'
|
||||
AND (duration = 0 OR ends > @CurrentTime)
|
||||
AND server_id = @ServerId
|
||||
), 0)
|
||||
+
|
||||
COALESCE((
|
||||
SELECT COUNT(*)
|
||||
FROM sa_bans
|
||||
JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid
|
||||
WHERE sa_bans.status = 'ACTIVE'
|
||||
AND sa_players_ips.address = @PlayerIP
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sa_bans
|
||||
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
|
||||
AND status = 'ACTIVE'
|
||||
AND (duration = 0 OR ends > @CurrentTime)
|
||||
AND server_id = @ServerId
|
||||
)
|
||||
), 0) AS TotalBanCount;
|
||||
""";
|
||||
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
|
|
@ -176,8 +189,10 @@ internal class BanManager(Database.Database? database)
|
|||
|
||||
banCount = await connection.ExecuteScalarAsync<int>(sql, parameters);
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
CS2_SimpleAdmin._logger?.LogError("Unable to check ban status for {PlayerName} ({ExceptionMessage})",
|
||||
player.Name, ex.Message);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ internal class MuteManager(Database.Database? database)
|
|||
|
||||
try
|
||||
{
|
||||
int batchSize = 10;
|
||||
var batchSize = 10;
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
|
||||
var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode
|
||||
|
|
@ -188,9 +188,9 @@ internal class MuteManager(Database.Database? database)
|
|||
var batch = players.Skip(i).Take(batchSize);
|
||||
var parametersList = new List<object>();
|
||||
|
||||
foreach (var (IpAddress, SteamID, UserId, Slot) in batch)
|
||||
foreach (var (_, steamId, _, _) in batch)
|
||||
{
|
||||
parametersList.Add(new { PlayerSteamID = SteamID, serverid = CS2_SimpleAdmin.ServerId });
|
||||
parametersList.Add(new { PlayerSteamID = steamId, serverid = CS2_SimpleAdmin.ServerId });
|
||||
}
|
||||
|
||||
await connection.ExecuteAsync(sql, parametersList);
|
||||
|
|
@ -201,14 +201,14 @@ internal class MuteManager(Database.Database? database)
|
|||
: "SELECT * FROM `sa_mutes` WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid";
|
||||
|
||||
|
||||
foreach (var (IpAddress, SteamID, UserId, Slot) in players)
|
||||
foreach (var (_, steamId, _, slot) in players)
|
||||
{
|
||||
var muteRecords = await connection.QueryAsync(sql, new { PlayerSteamID = SteamID, serverid = CS2_SimpleAdmin.ServerId });
|
||||
var muteRecords = await connection.QueryAsync(sql, new { PlayerSteamID = steamId, serverid = CS2_SimpleAdmin.ServerId });
|
||||
|
||||
foreach (var muteRecord in muteRecords)
|
||||
{
|
||||
DateTime endDateTime = muteRecord.ends;
|
||||
PlayerPenaltyManager.RemovePenaltiesByDateTime(Slot, endDateTime);
|
||||
PlayerPenaltyManager.RemovePenaltiesByDateTime(slot, endDateTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -295,7 +295,7 @@ internal class MuteManager(Database.Database? database)
|
|||
try
|
||||
{
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
var sql = "";
|
||||
string sql;
|
||||
|
||||
if (CS2_SimpleAdmin.Instance.Config.MultiServerMode)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ public class PlayerManager
|
|||
try
|
||||
{
|
||||
// Check if the player is banned
|
||||
bool isBanned = await CS2_SimpleAdmin.Instance.BanManager.IsPlayerBanned(CS2_SimpleAdmin.PlayersInfo[userId]);
|
||||
|
||||
var isBanned = await CS2_SimpleAdmin.Instance.BanManager.IsPlayerBanned(CS2_SimpleAdmin.PlayersInfo[userId]);
|
||||
|
||||
if (isBanned)
|
||||
{
|
||||
// Add player's IP and SteamID to bannedPlayers list if not already present
|
||||
|
|
@ -205,14 +205,14 @@ public class PlayerManager
|
|||
|
||||
public void CheckPlayersTimer()
|
||||
{
|
||||
CS2_SimpleAdmin.Database = new Database.Database(CS2_SimpleAdmin.Instance.DbConnectionString);
|
||||
|
||||
CS2_SimpleAdmin.Instance.AddTimer(61.0f, () =>
|
||||
{
|
||||
#if DEBUG
|
||||
CS2_SimpleAdmin._logger?.LogCritical("[OnMapStart] Expired check");
|
||||
#endif
|
||||
|
||||
if (CS2_SimpleAdmin.Database == null)
|
||||
return;
|
||||
|
||||
var players = Helper.GetValidPlayers();
|
||||
var onlinePlayers = players
|
||||
.Where(player => player.IpAddress != null)
|
||||
|
|
@ -271,6 +271,6 @@ public class PlayerManager
|
|||
}
|
||||
});
|
||||
});
|
||||
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT | CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
||||
}, CounterStrikeSharp.API.Modules.Timers.TimerFlags.REPEAT);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue