Revert "Log ban hits in DB. (#6337)" (#6357)

This reverts commit b75f005bb4.
This commit is contained in:
Pieter-Jan Briers
2022-01-28 19:33:09 +01:00
committed by GitHub
parent 1cd6c19fda
commit 764010fea0
13 changed files with 39 additions and 2150 deletions

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Content.Server.Database;
@@ -64,35 +63,6 @@ The ban reason is: ""{ban.Reason}""
*/
private async Task NetMgrOnConnecting(NetConnectingArgs e)
{
var deny = await ShouldDeny(e);
var addr = e.IP.Address;
var userId = e.UserId;
if (deny != null)
{
var (reason, msg, banHits) = deny.Value;
var id = await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, reason);
if (banHits is { Count: > 0 })
await _db.AddServerBanHitsAsync(id, banHits);
e.Deny(msg);
}
else
{
await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, null);
if (!ServerPreferencesManager.ShouldStorePrefs(e.AuthType))
return;
await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, e.UserData.HWId);
}
}
private async Task<(ConnectionDenyReason, string, List<ServerBanDef>? bansHit)?> ShouldDeny(
NetConnectingArgs e)
{
// Check if banned.
var addr = e.IP.Address;
@@ -107,26 +77,34 @@ The ban reason is: ""{ban.Reason}""
var adminData = await _dbManager.GetAdminDataForAsync(e.UserId);
var wasInGame = EntitySystem.TryGet<GameTicker>(out var ticker) && ticker.PlayersInGame.Contains(userId);
if ((_plyMgr.PlayerCount >= _cfg.GetCVar(CCVars.SoftMaxPlayers) && adminData is null) && !wasInGame)
if ((_plyMgr.PlayerCount >= _cfg.GetCVar(CCVars.SoftMaxPlayers) && adminData is null) && !wasInGame )
{
return (ConnectionDenyReason.Full, Loc.GetString("soft-player-cap-full"), null);
e.Deny(Loc.GetString("soft-player-cap-full"));
return;
}
var bans = await _db.GetServerBansAsync(addr, userId, hwId);
if (bans.Count > 0)
var ban = await _db.GetServerBanAsync(addr, userId, hwId);
if (ban != null)
{
var firstBan = bans[0];
return (ConnectionDenyReason.Ban, firstBan.DisconnectMessage, bans);
e.Deny(ban.DisconnectMessage);
return;
}
if (_cfg.GetCVar(CCVars.WhitelistEnabled)
&& await _db.GetWhitelistStatusAsync(userId) == false
&& adminData is null)
{
return (ConnectionDenyReason.Whitelist, Loc.GetString("whitelist-not-whitelisted"), null);
e.Deny(Loc.GetString("whitelist-not-whitelisted"));
return;
}
return null;
if (!ServerPreferencesManager.ShouldStorePrefs(e.AuthType))
{
return;
}
await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, e.UserData.HWId);
await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId);
}
private async Task<NetUserId?> AssignUserIdCallback(string name)

View File

@@ -365,28 +365,11 @@ namespace Content.Server.Database
/*
* CONNECTION LOG
*/
public abstract Task<int> AddConnectionLogAsync(
public abstract Task AddConnectionLogAsync(
NetUserId userId,
string userName,
IPAddress address,
ImmutableArray<byte> hwId,
ConnectionDenyReason? denied);
public async Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans)
{
await using var db = await GetDb();
foreach (var ban in bans)
{
db.DbContext.ServerBanHit.Add(new ServerBanHit
{
ConnectionId = connection, BanId = ban.Id!.Value
});
}
await db.DbContext.SaveChangesAsync();
}
ImmutableArray<byte> hwId);
#endregion
#region Admin Ranks

View File

@@ -100,16 +100,11 @@ namespace Content.Server.Database
#endregion
#region Connection Logs
/// <returns>ID of newly inserted connection log row.</returns>
Task<int> AddConnectionLogAsync(
Task AddConnectionLogAsync(
NetUserId userId,
string userName,
IPAddress address,
ImmutableArray<byte> hwId,
ConnectionDenyReason? denied);
Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans);
ImmutableArray<byte> hwId);
#endregion
#region Admin Ranks
@@ -281,19 +276,13 @@ namespace Content.Server.Database
return _db.GetPlayerRecordByUserId(userId, cancel);
}
public Task<int> AddConnectionLogAsync(
public Task AddConnectionLogAsync(
NetUserId userId,
string userName,
IPAddress address,
ImmutableArray<byte> hwId,
ConnectionDenyReason? denied)
ImmutableArray<byte> hwId)
{
return _db.AddConnectionLogAsync(userId, userName, address, hwId, denied);
}
public Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans)
{
return _db.AddServerBanHitsAsync(connection, bans);
return _db.AddConnectionLogAsync(userId, userName, address, hwId);
}
public Task<Admin?> GetAdminDataForAsync(NetUserId userId, CancellationToken cancel = default)

View File

@@ -232,30 +232,24 @@ namespace Content.Server.Database
record.LastSeenHWId?.ToImmutableArray());
}
public override async Task<int> AddConnectionLogAsync(
public override async Task AddConnectionLogAsync(
NetUserId userId,
string userName,
IPAddress address,
ImmutableArray<byte> hwId,
ConnectionDenyReason? denied)
ImmutableArray<byte> hwId)
{
await using var db = await GetDbImpl();
var connectionLog = new ConnectionLog
db.PgDbContext.ConnectionLog.Add(new ConnectionLog
{
Address = address,
Time = DateTime.UtcNow,
UserId = userId.UserId,
UserName = userName,
HWId = hwId.ToArray(),
Denied = denied,
};
db.PgDbContext.ConnectionLog.Add(connectionLog);
HWId = hwId.ToArray()
});
await db.PgDbContext.SaveChangesAsync();
return connectionLog.Id;
}
public override async Task<((Admin, string? lastUserName)[] admins, AdminRank[])>

View File

@@ -215,30 +215,21 @@ namespace Content.Server.Database
unban.UnbanTime);
}
public override async Task<int> AddConnectionLogAsync(
NetUserId userId,
string userName,
IPAddress address,
ImmutableArray<byte> hwId,
ConnectionDenyReason? denied)
public override async Task AddConnectionLogAsync(NetUserId userId, string userName, IPAddress address,
ImmutableArray<byte> hwId)
{
await using var db = await GetDbImpl();
var connectionLog = new ConnectionLog
db.SqliteDbContext.ConnectionLog.Add(new ConnectionLog
{
Address = address,
Time = DateTime.UtcNow,
UserId = userId.UserId,
UserName = userName,
HWId = hwId.ToArray(),
Denied = denied
};
db.SqliteDbContext.ConnectionLog.Add(connectionLog);
HWId = hwId.ToArray()
});
await db.SqliteDbContext.SaveChangesAsync();
return connectionLog.Id;
}
public override async Task<((Admin, string? lastUserName)[] admins, AdminRank[])> GetAllAdminAndRanksAsync(