Log server ID in connection logs table (#21911)
This commit is contained in:
committed by
GitHub
parent
e639006d42
commit
b4f8393f42
@@ -570,7 +570,8 @@ namespace Content.Server.Database
|
||||
string userName,
|
||||
IPAddress address,
|
||||
ImmutableArray<byte> hwId,
|
||||
ConnectionDenyReason? denied);
|
||||
ConnectionDenyReason? denied,
|
||||
int serverId);
|
||||
|
||||
public async Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans)
|
||||
{
|
||||
|
||||
39
Content.Server/Database/ServerDbEntryManager.cs
Normal file
39
Content.Server/Database/ServerDbEntryManager.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using System.Threading.Tasks;
|
||||
using Content.Shared.CCVar;
|
||||
using Robust.Shared.Configuration;
|
||||
|
||||
namespace Content.Server.Database;
|
||||
|
||||
/// <summary>
|
||||
/// Stupid tiny manager whose sole purpose is keeping track of the <see cref="Server"/> database entry for this server.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This allows the value to be cached,
|
||||
/// so it can be easily retrieved by later code that needs to log the server ID to the database.
|
||||
/// </remarks>
|
||||
public sealed class ServerDbEntryManager
|
||||
{
|
||||
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
||||
[Dependency] private readonly IServerDbManager _db = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
|
||||
private Task<Server>? _serverEntityTask;
|
||||
|
||||
/// <summary>
|
||||
/// The entity that represents this server in the database.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This value is cached when first requested. Do not re-use this entity; if you need data like the rounds,
|
||||
/// request it manually with <see cref="IServerDbManager.AddOrGetServer"/>.
|
||||
/// </remarks>
|
||||
public Task<Server> ServerEntity => _serverEntityTask ??= GetServerEntity();
|
||||
|
||||
private async Task<Server> GetServerEntity()
|
||||
{
|
||||
var name = _cfg.GetCVar(CCVars.AdminLogsServerName);
|
||||
var server = await _db.AddOrGetServer(name);
|
||||
|
||||
_logManager.GetSawmill("db").Verbose("Server name: {Name}, ID in database: {Id}", server, server.Id);
|
||||
return server;
|
||||
}
|
||||
}
|
||||
@@ -185,7 +185,8 @@ namespace Content.Server.Database
|
||||
string userName,
|
||||
IPAddress address,
|
||||
ImmutableArray<byte> hwId,
|
||||
ConnectionDenyReason? denied);
|
||||
ConnectionDenyReason? denied,
|
||||
int serverId);
|
||||
|
||||
Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans);
|
||||
|
||||
@@ -514,10 +515,11 @@ namespace Content.Server.Database
|
||||
string userName,
|
||||
IPAddress address,
|
||||
ImmutableArray<byte> hwId,
|
||||
ConnectionDenyReason? denied)
|
||||
ConnectionDenyReason? denied,
|
||||
int serverId)
|
||||
{
|
||||
DbWriteOpsMetric.Inc();
|
||||
return RunDbCommand(() => _db.AddConnectionLogAsync(userId, userName, address, hwId, denied));
|
||||
return RunDbCommand(() => _db.AddConnectionLogAsync(userId, userName, address, hwId, denied, serverId));
|
||||
}
|
||||
|
||||
public Task AddServerBanHitsAsync(int connection, IEnumerable<ServerBanDef> bans)
|
||||
|
||||
@@ -463,7 +463,8 @@ namespace Content.Server.Database
|
||||
string userName,
|
||||
IPAddress address,
|
||||
ImmutableArray<byte> hwId,
|
||||
ConnectionDenyReason? denied)
|
||||
ConnectionDenyReason? denied,
|
||||
int serverId)
|
||||
{
|
||||
await using var db = await GetDbImpl();
|
||||
|
||||
@@ -475,6 +476,7 @@ namespace Content.Server.Database
|
||||
UserName = userName,
|
||||
HWId = hwId.ToArray(),
|
||||
Denied = denied,
|
||||
ServerId = serverId
|
||||
};
|
||||
|
||||
db.PgDbContext.ConnectionLog.Add(connectionLog);
|
||||
|
||||
@@ -413,12 +413,13 @@ namespace Content.Server.Database
|
||||
DateTime.SpecifyKind(unban.UnbanTime, DateTimeKind.Utc));
|
||||
}
|
||||
|
||||
public override async Task<int> AddConnectionLogAsync(
|
||||
public override async Task<int> AddConnectionLogAsync(
|
||||
NetUserId userId,
|
||||
string userName,
|
||||
IPAddress address,
|
||||
ImmutableArray<byte> hwId,
|
||||
ConnectionDenyReason? denied)
|
||||
ConnectionDenyReason? denied,
|
||||
int serverId)
|
||||
{
|
||||
await using var db = await GetDbImpl();
|
||||
|
||||
@@ -429,7 +430,8 @@ namespace Content.Server.Database
|
||||
UserId = userId.UserId,
|
||||
UserName = userName,
|
||||
HWId = hwId.ToArray(),
|
||||
Denied = denied
|
||||
Denied = denied,
|
||||
ServerId = serverId
|
||||
};
|
||||
|
||||
db.SqliteDbContext.ConnectionLog.Add(connectionLog);
|
||||
|
||||
Reference in New Issue
Block a user