public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { PlayerApiParams p = null; if ((p = TryJsonParse <PlayerApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "players_update": WebAdmin.SendHtml(ctx, ToJson(Core.Players.GetPlayers_s())); break; case "players_swap": WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Core.Scheduler.PushTask(() => Core.Players.Swap(new Player(p.PlayerId))); break; case "players_kick": WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Core.Scheduler.PushTask(() => Core.Players.Kick(new Player(p.PlayerId))); break; case "players_ban": WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Player player; if ((player = Core.Players.GetPlayerBySlot(p.PlayerId)) != null) { //TODO: figure something out for adminId Core.Database.InsertBan(new PlayerBan(player.Name, player.KeyHash, player.RemoteAddress.ToString(), "WebAdmin", "WebAdmin", p.BanType, player.DatabaseId, 1)); Core.Scheduler.PushTask(() => Core.Players.Kick(player)); } break; } }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { PlayerApiParams p = null; if ((p = TryJsonParse <PlayerApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "players_update": WebAdmin.SendHtml(ctx, ToJson(Core.Players.GetPlayers_s())); break; case "players_swap": WebServer.LogAudit(user, "swapped slot #{0}", p.PlayerId.ToString()); WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Core.Scheduler.PushTask(() => Core.Players.Swap(new Player(p.PlayerId))); break; case "players_kick": WebServer.LogAudit(user, "kicked slot #{0}", p.PlayerId.ToString()); WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Core.Scheduler.PushTask(() => Core.Players.Kick(new Player(p.PlayerId))); break; case "players_ban": WebServer.LogAudit(user, "banned slot #{0}", p.PlayerId.ToString()); WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Player player; if ((player = Core.Players.GetPlayerBySlot(p.PlayerId)) != null) { PlayerBan ban; //TODO: figure something out for adminId string adminName = "WebAdmin"; string reason = "WebAdmin"; int adminDBId = 1; if (p.BanDuration < 0) { ban = new PlayerBan(player.Name, player.KeyHash, player.RemoteAddress.ToString(), adminName, reason, p.BanType, player.DatabaseId, adminDBId); } else { TimeSpan duration = new TimeSpan(0, 0, p.BanDuration); ban = new PlayerBan(player.Name, player.KeyHash, player.RemoteAddressStr, adminName, reason, duration, p.BanType, player.DatabaseId, adminDBId); } Core.Database.InsertBan(ban); Core.Scheduler.PushTask(() => Core.Players.Kick(player)); } break; } }