From 5f0eea099ea7466c763c7570e0f1ec3002b4a5f2 Mon Sep 17 00:00:00 2001 From: linmeideli <2558527373@qq.com> Date: Sat, 13 Jun 2026 10:43:03 +0800 Subject: [PATCH] Kick Optional Reason --- src/Empostor.Server/Http/AdminController.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Empostor.Server/Http/AdminController.cs b/src/Empostor.Server/Http/AdminController.cs index e23d00b..83ad207 100644 --- a/src/Empostor.Server/Http/AdminController.cs +++ b/src/Empostor.Server/Http/AdminController.cs @@ -260,13 +260,13 @@ namespace Empostor.Server.Http return NotFound(Err($"Client {req.ClientId} not found")); } + await c.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Kicked by admin"); + if (c.Player != null) { await c.Player.KickAsync(); } - await c.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Kicked by admin"); - return Ok(new { kicked = true, name = c.Name }); } @@ -290,12 +290,13 @@ namespace Empostor.Server.Http var cip = c.Connection?.EndPoint?.Address; if (cip != null && Norm(cip) == Norm(ip)) { + await c.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Banned by admin"); + if (c.Player != null) { await c.Player.BanAsync(); } - await c.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Banned by admin"); kicked++; } } @@ -322,12 +323,13 @@ namespace Empostor.Server.Http { if (c.FriendCode == req.FriendCode) { + await c.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Banned by admin"); + if (c.Player != null) { await c.Player.BanAsync(); } - await c.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Banned by admin"); kicked++; } } @@ -374,6 +376,7 @@ namespace Empostor.Server.Http var players = g.Players.ToList(); foreach (var p in players) { + await p.Client.DisconnectAsync(DisconnectReason.Custom, req.Reason ?? "Game ended by admin"); await p.KickAsync(); } @@ -807,7 +810,7 @@ namespace Empostor.Server.Http public sealed record UnbanReq(string Value); - public sealed record GameCodeReq(string GameCode); + public sealed record GameCodeReq(string GameCode, string? Reason = null); public sealed record GamePublicReq(string GameCode, bool IsPublic); @@ -1657,6 +1660,7 @@ namespace Empostor.Server.Http