- Minor changes
This commit is contained in:
Dawid Bepierszcz
2024-04-28 02:14:50 +02:00
parent 806b5038ca
commit aefa6c6355
28 changed files with 1268 additions and 1351 deletions

View File

@@ -19,7 +19,8 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
{
await using MySqlConnection connection = await _database.GetConnectionAsync();
var sql = "INSERT INTO `sa_bans` (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " +
var sql =
"INSERT INTO `sa_bans` (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " +
"VALUES (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)";
await connection.ExecuteAsync(sql, new
@@ -115,26 +116,22 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
try
{
string sql = "";
var sql = "";
if (_config.MultiServerMode)
{
sql = @"
UPDATE sa_bans
SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END,
player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
AND status = 'ACTIVE'
AND (duration = 0 OR ends > @CurrentTime);
SELECT COUNT(*) FROM sa_bans
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
AND status = 'ACTIVE'
AND (duration = 0 OR ends > @CurrentTime);";
}
else
{
sql = @"
sql = _config.MultiServerMode ? """
UPDATE sa_bans
SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END,
player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
AND status = 'ACTIVE'
AND (duration = 0 OR ends > @CurrentTime);
SELECT COUNT(*) FROM sa_bans
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
AND status = 'ACTIVE'
AND (duration = 0 OR ends > @CurrentTime);
""" : @"
UPDATE sa_bans
SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END,
player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END
@@ -146,9 +143,8 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)
AND status = 'ACTIVE'
AND (duration = 0 OR ends > @CurrentTime) AND server_id = @serverid;";
}
await using MySqlConnection connection = await _database.GetConnectionAsync();
await using var connection = await _database.GetConnectionAsync();
var parameters = new
{
@@ -173,28 +169,31 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
{
try
{
string sql = "";
var sql = "";
if (_config.MultiServerMode)
{
sql = "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) AND server_id = @serverid";
}
else
{
sql = "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)";
}
sql = _config.MultiServerMode
? "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) AND server_id = @serverid"
: "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)";
int banCount;
await using MySqlConnection connection = await _database.GetConnectionAsync();
await using var connection = await _database.GetConnectionAsync();
if (!string.IsNullOrEmpty(player.IpAddress))
{
banCount = await connection.ExecuteScalarAsync<int>(sql, new { PlayerSteamID = player.SteamId, PlayerIP = player.IpAddress, serverid = CS2_SimpleAdmin.ServerId });
banCount = await connection.ExecuteScalarAsync<int>(sql,
new
{
PlayerSteamID = player.SteamId, PlayerIP = player.IpAddress, serverid = CS2_SimpleAdmin.ServerId
});
}
else
{
banCount = await connection.ExecuteScalarAsync<int>(sql, new { PlayerSteamID = player.SteamId, PlayerIP = DBNull.Value, serverid = CS2_SimpleAdmin.ServerId });
banCount = await connection.ExecuteScalarAsync<int>(sql,
new
{
PlayerSteamID = player.SteamId, PlayerIP = DBNull.Value, serverid = CS2_SimpleAdmin.ServerId
});
}
return banCount;
@@ -206,15 +205,15 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
public async Task UnbanPlayer(string playerPattern, string adminSteamId, string reason)
{
if (playerPattern == null || playerPattern.Length <= 1)
if (playerPattern is not { Length: > 1 })
{
return;
}
try
{
await using MySqlConnection connection = await _database.GetConnectionAsync();
await using var connection = await _database.GetConnectionAsync();
string sqlRetrieveBans = "";
var sqlRetrieveBans = "";
if (_config.MultiServerMode)
{
sqlRetrieveBans = "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE' " +
@@ -226,16 +225,17 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
}
var bans = await connection.QueryAsync(sqlRetrieveBans, new { pattern = playerPattern, serverid = CS2_SimpleAdmin.ServerId });
if (!bans.Any())
var bansList = bans as dynamic[] ?? bans.ToArray();
if (!bansList.Any())
return;
string sqlAdmin = "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId";
string sqlInsertUnban = "INSERT INTO sa_unbans (ban_id, admin_id, reason) VALUES (@banId, @adminId, @reason); SELECT LAST_INSERT_ID();";
const string sqlAdmin = "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId";
var sqlInsertUnban = "INSERT INTO sa_unbans (ban_id, admin_id, reason) VALUES (@banId, @adminId, @reason); SELECT LAST_INSERT_ID();";
int? sqlAdminId = await connection.ExecuteScalarAsync<int?>(sqlAdmin, new { adminSteamId });
int adminId = sqlAdminId ?? 0;
var sqlAdminId = await connection.ExecuteScalarAsync<int?>(sqlAdmin, new { adminSteamId });
var adminId = sqlAdminId ?? 0;
foreach (var ban in bans)
foreach (var ban in bansList)
{
int banId = ban.id;
int? unbanId;
@@ -252,7 +252,7 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
}
// Update sa_bans to set unban_id
string sqlUpdateBan = "UPDATE sa_bans SET status = 'UNBANNED', unban_id = @unbanId WHERE id = @banId";
const string sqlUpdateBan = "UPDATE sa_bans SET status = 'UNBANNED', unban_id = @unbanId WHERE id = @banId";
await connection.ExecuteAsync(sqlUpdateBan, new { unbanId, banId });
}
@@ -269,8 +269,8 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
{
try
{
await using MySqlConnection connection = await _database.GetConnectionAsync();
string sql = "";
await using var connection = await _database.GetConnectionAsync();
var sql = "";
if (_config.MultiServerMode)
{
@@ -286,19 +286,21 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
{
if (!UserId.HasValue) continue;
int banCount = 0;
var banCount = 0;
if (!string.IsNullOrEmpty(IpAddress))
{
banCount = await connection.ExecuteScalarAsync<int>(sql, new { PlayerSteamID = SteamID, PlayerIP = IpAddress, serverid = CS2_SimpleAdmin.ServerId });
banCount = await connection.ExecuteScalarAsync<int>(sql,
new { PlayerSteamID = SteamID, PlayerIP = IpAddress, serverid = CS2_SimpleAdmin.ServerId });
}
else
{
banCount = await connection.ExecuteScalarAsync<int>(sql, new { PlayerSteamID = SteamID, PlayerIP = DBNull.Value, serverid = CS2_SimpleAdmin.ServerId });
banCount = await connection.ExecuteScalarAsync<int>(sql,
new { PlayerSteamID = SteamID, PlayerIP = DBNull.Value, serverid = CS2_SimpleAdmin.ServerId });
}
if (banCount > 0)
{
Server.NextFrame(() =>
await Server.NextFrameAsync(() =>
{
Helper.KickPlayer(UserId.Value, "Banned");
});
@@ -310,12 +312,11 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
public async Task ExpireOldBans()
{
var currentTime = DateTime.UtcNow.ToLocalTime();
await using var connection = await _database.GetConnectionAsync();
try
{
DateTime currentTime = DateTime.UtcNow.ToLocalTime();
await using MySqlConnection connection = await _database.GetConnectionAsync();
/*
string sql = "";
await using MySqlConnection connection = await _database.GetConnectionAsync();
@@ -324,64 +325,58 @@ internal class BanManager(Database database, CS2_SimpleAdminConfig config)
await connection.ExecuteAsync(sql, new { CurrentTime = DateTime.UtcNow.ToLocalTime() });
*/
string sql = "";
var sql = "";
if (_config.MultiServerMode)
{
sql = @"
UPDATE sa_bans
SET
status = 'EXPIRED'
WHERE
status = 'ACTIVE'
AND
`duration` > 0
AND
ends <= @currentTime
AND server_id = @serverid";
}
else
{
sql = @"
UPDATE sa_bans
SET
status = 'EXPIRED'
WHERE
status = 'ACTIVE'
AND
`duration` > 0
AND
ends <= @currentTime";
}
sql = _config.MultiServerMode ? """
UPDATE sa_bans
SET
status = 'EXPIRED'
WHERE
status = 'ACTIVE'
AND
`duration` > 0
AND
ends <= @currentTime
AND server_id = @serverid
""" : """
UPDATE sa_bans
SET
status = 'EXPIRED'
WHERE
status = 'ACTIVE'
AND
`duration` > 0
AND
ends <= @currentTime
""";
await connection.ExecuteAsync(sql, new { currentTime, serverid = CS2_SimpleAdmin.ServerId });
if (_config.ExpireOldIpBans > 0)
{
DateTime ipBansTime = currentTime.AddDays(-_config.ExpireOldIpBans).ToLocalTime();
if (_config.MultiServerMode)
{
sql = @"
UPDATE sa_bans
SET
player_ip = NULL
WHERE
status = 'ACTIVE'
AND
ends <= @ipBansTime
AND server_id = @serverid";
}
else
{
sql = @"
UPDATE sa_bans
SET
player_ip = NULL
WHERE
status = 'ACTIVE'
AND
ends <= @ipBansTime";
}
var ipBansTime = currentTime.AddDays(-_config.ExpireOldIpBans).ToLocalTime();
sql = _config.MultiServerMode ? """
UPDATE sa_bans
SET
player_ip = NULL
WHERE
status = 'ACTIVE'
AND
ends <= @ipBansTime
AND server_id = @serverid
""" : """
UPDATE sa_bans
SET
player_ip = NULL
WHERE
status = 'ACTIVE'
AND
ends <= @ipBansTime
""";
await connection.ExecuteAsync(sql, new { ipBansTime, CS2_SimpleAdmin.ServerId });
}