コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }