Log ban hits in DB. (#6337)

This commit is contained in:
Pieter-Jan Briers
2022-01-28 19:10:44 +01:00
committed by GitHub
parent a3aabf59ad
commit b75f005bb4
13 changed files with 2150 additions and 39 deletions

View File

@@ -365,11 +365,28 @@ namespace Content.Server.Database
/*
* CONNECTION LOG
*/
public abstract Task AddConnectionLogAsync(
public abstract Task<int> AddConnectionLogAsync(
NetUserId userId,
string userName,
IPAddress address,
ImmutableArray<byte> hwId);
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();
}
#endregion
#region Admin Ranks

View File

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

View File

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

View File

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