Add system to kick people if they connect to multiple servers at once. (#34563)
This commit is contained in:
committed by
GitHub
parent
1031d2a6c1
commit
71c9dfc9ea
@@ -2,6 +2,7 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Content.Server.Administration.Managers;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Npgsql;
|
||||
|
||||
namespace Content.Server.Database;
|
||||
@@ -17,6 +18,7 @@ public sealed partial class ServerDbPostgres
|
||||
private static readonly string[] NotificationChannels =
|
||||
[
|
||||
BanManager.BanNotificationChannel,
|
||||
MultiServerKickManager.NotificationChannel,
|
||||
];
|
||||
|
||||
private static readonly TimeSpan ReconnectWaitIncrease = TimeSpan.FromSeconds(10);
|
||||
@@ -111,6 +113,14 @@ public sealed partial class ServerDbPostgres
|
||||
});
|
||||
}
|
||||
|
||||
public override async Task SendNotification(DatabaseNotification notification)
|
||||
{
|
||||
await using var db = await GetDbImpl();
|
||||
|
||||
await db.PgDbContext.Database.ExecuteSqlAsync(
|
||||
$"SELECT pg_notify({notification.Channel}, {notification.Payload})");
|
||||
}
|
||||
|
||||
public override void Shutdown()
|
||||
{
|
||||
_notificationTokenSource.Cancel();
|
||||
|
||||
Reference in New Issue
Block a user