public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { GameSettingsApiParams p = null; if ((p = TryJsonParse <GameSettingsApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "game_get": ServerSettings s = Core.Server.Settings; WebServer.LogAudit(user, "modified game settings"); //TODO hacky way to pass "floats using ints" int st = s.AutoAnnouncePeriod; s.AutoAnnouncePeriod = (int)Util.I2f(s.AutoAnnouncePeriod); WebAdmin.SendHtml(ctx, ToJson(new GameSettingsResponse(s))); s.AutoAnnouncePeriod = st; break; case "game_set": //NOTE: hacky way of passing spawnvalue p.Settings.AutoAnnouncePeriod = Util.F2i(p.Settings.AutoAnnouncePeriod); Core.Server.Settings.UpdateFrom(p.Settings, ConfigSection.GAME); try { Core.Server.Settings.WriteToFile(Core); WebAdmin.SendHtml(ctx, ToJson(new GameSettingsSaveResponse())); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new GameSettingsSaveResponse(e))); } break; } }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { GameSettingsApiParams p = null; if ((p = TryJsonParse <GameSettingsApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "game_get": ServerSettings s = Core.Server.Settings; WebAdmin.SendHtml(ctx, ToJson(new GameSettingsResponse(s))); break; case "game_set": WebServer.LogAudit(user, "modified game settings"); var changes = Core.Server.Settings.UpdateFrom(p.Settings, ConfigSection.GAME); if (Core.Config.EnableRuntime && Core.Server.Status == ServerStatus.Online) { Core.Scheduler.PushTask(() => Core.Rcon.UpdateServerSettings(changes)); } try { Core.Server.Settings.WriteToFile(Core); WebAdmin.SendHtml(ctx, ToJson(new GameSettingsSaveResponse())); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new GameSettingsSaveResponse(e))); } break; } }