public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { WebUserApiParams p = null; if ((p = TryJsonParse <WebUserApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "users_get": break; case "users_create": WebServer.LogAudit(user, "created user {0}", p.Username); Core.Database.InsertWebUser(new WebUser(p.Username, PBKDF2.HashPassword(Util.Md5(p.SpaceInvaders)))); break; case "users_edit": WebServer.LogAudit(user, "modified user {0}", p.Username); Core.Database.UpdateWebUser(new WebUser(p.Id, p.Username, PBKDF2.HashPassword(Util.Md5(p.SpaceInvaders))), p.UpdateSpaceInvaders); break; case "users_delete": WebServer.LogAudit(user, "deleted user {0}", p.Username); Core.Database.DeleteWebUser(new WebUser(p.Id)); break; } WebAdmin.SendHtml(ctx, ToJson(Core.Database.GetWebUsers())); }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { MapApiParams p = null; if ((p = TryJsonParse <MapApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "maps_installed": List <ServerMap> mapList = Core.Database.GetMaps(); WebAdmin.SendHtml(ctx, ToJson(mapList)); break; case "maps_save": WebServer.LogAudit(user, "modified the map rotation"); WebAdmin.SendHtml(ctx, ToJson(SaveMapRot(p))); break; case "maps_rotation": WebAdmin.SendHtml(ctx, ToJson(GetMapRotation())); break; } }
public override void HandleContext(HttpListenerContext ctx, WebUser user) { if (ctx.Request.HttpMethod == "GET") { HandleGet(ctx, user); } else if (ctx.Request.HttpMethod == "POST") { string postData; try { postData = new StreamReader(ctx.Request.InputStream).ReadToEnd(); } catch (Exception e) { Logger.Log(LogLevel.Verbose, "http post read from {0} failed - {1}", ctx.Request.RemoteEndPoint.ToString(), e.ToString()); WebAdmin.SendHttpStatus(ctx, HttpStatusCode.InternalServerError); return; } HandlePost(ctx, user, postData); } }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { GeneralSettingsApiParams p = null; if ((p = TryJsonParse <GeneralSettingsApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "general_get": WebAdmin.SendHtml(ctx, ToJson(new GeneralSettingsResponse(Core.Server.Settings, GetNetworkDevices()))); break; case "general_set": Core.Server.Settings.UpdateFrom(p.Settings, ConfigSection.GENERAL); try { Core.Server.Settings.WriteToFile(Core); WebAdmin.SendHtml(ctx, ToJson(new GeneralSettingsSaveResponse())); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new GeneralSettingsSaveResponse(e))); } break; } }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { DashboardApiParams p = null; if ((p = TryJsonParse <DashboardApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "status_set": if (p.NewStatusId == (int)ServerStatus.Online) { Core.Server.Start(); } else if (p.NewStatusId == (int)ServerStatus.Offline) { Core.Server.Stop(); } break; } ServerInfo info = Core.Game.LatestInfo; if (info == null) { info = new ServerInfo(); //Send default if no info recieved yet } info.Status = Core.Server.Status; WebAdmin.SendHtml(ctx, ToJson(info)); }
public WebAdmin GetAdmin(BusinessDbContext context) { if (_admin != null) { return(_admin); } return(_admin = context.Admins.FirstOrDefault(x => x.Id == new Guid(AdminId))); }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { StatApiParams p = null; if ((p = TryJsonParse <StatApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "stats_update": WebAdmin.SendHtml(ctx, ToJson(Core.Database.GetMatches(p.NameExp, p.MapExp, p.Selected, p.DateFrom, p.DateUntil, p.Page, 20))); break; case "stats_select": try { Core.Database.UpdateMatchSelected(p.DatabaseId, p.Selected); WebAdmin.SendHtml(ctx, ToJson(new StatApiModifyParams(p.DatabaseId, p.Selected))); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new StatApiModifyParams(e))); } break; case "stats_delete": try { Core.Database.DeleteMatch(p.DatabaseId); WebAdmin.SendHtml(ctx, ToJson(new StatApiModifyParams(p.DatabaseId))); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new StatApiModifyParams(e))); } break; case "stats_edit": try { Core.Database.UpdateMatchName(p.DatabaseId, p.NameExp); WebAdmin.SendHtml(ctx, ToJson(new StatApiModifyParams(p.DatabaseId, p.NameExp))); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new StatApiModifyParams(e))); } break; case "stats_players": WebAdmin.SendHtml(ctx, ToJson(Core.Database.GetMatchPlayerStats(p.DatabaseId))); break; } }
private void SendCSV(HttpListenerContext ctx, int id) { GameInfo info = Core.Database.GetMatch(id); string csv = StatisticsReportGenerator.GenerateReport(info, Core.Database.GetMatchPlayerStats(id)); ctx.Response.AddHeader("Content-Disposition", $"attachment; filename=\"matchexport_{info.GameStartedStr}.csv\""); WebAdmin.SendHtml(ctx, csv); }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { ApiRequestParams p = null; if ((p = TryJsonParse <ApiRequestParams>(ctx, postData)) == null) { return; } if (p.Action.Equals("status_get")) { WebAdmin.SendHtml(ctx, ToJson(new DefaultApiResponse(Core.Server.Status == ServerStatus.Online, Core.Config.EnableRuntime))); } }
protected T TryJsonParse <T>(HttpListenerContext ctx, string json) { T obj = default(T); try { obj = JsonConvert.DeserializeObject <T>(json); } catch (Exception e) { Logger.Log(LogLevel.Verbose, "Invalid request: json failed ({0})", e.ToString()); WebAdmin.SendHttpStatus(ctx, HttpStatusCode.BadRequest); } return(obj); }
public WebAdmin Process(BusinessDbContext context) { var validatedUser = context.Admins.FirstOrDefault(x => x.Email == this.Email); if (validatedUser != null) { return(validatedUser); } validatedUser = new WebAdmin(Name, Email, Password); var result = context.AllUsers.Add(validatedUser); context.SaveChanges(); Log.Information("Created in Admin {Admin}", validatedUser); return(validatedUser); }
public void ReturnTemplate(HttpListenerContext ctx, params string[] replacements) { string html = WebAdmin.LoadTemplate(Template); for (uint i = 0; i < replacements.Length; i += 2) { if (replacements.Length < i) { Logger.Log(LogLevel.Error, Log.WEB_REPLACEMENT_NOVALUE, replacements[i]); } else { html = html.Replace(replacements[i], replacements[i + 1]); } } WebAdmin.SendHtml(ctx, html); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.Cookies["uroll"].Value != "admin") { if (!string.IsNullOrEmpty(Page.User.Identity.Name)) { WebAdmin p = WebAdmin.GetAdmin((Convert.ToString(Page.User.Identity.Name))); if (p != null) { ausername.InnerText = p.Username; } } else if (Request.Cookies["uroll"].Value != "admin") { Response.Redirect("/logout.aspx"); } } } }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { BanApiParams p = null; if ((p = TryJsonParse <BanApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "bans_update": List <PlayerBan> banList = Core.Database.GetBans(p.PlayerNameExp, p.AdminNameExp, p.ReasonExp, p.Expired, p.Type, p.StartDate, 25); WebAdmin.SendHtml(ctx, ToJson(banList)); break; case "bans_delete": Core.Database.DeleteBan(p.DatabaseId); WebAdmin.SendHtml(ctx, ToJson(new BanAdminResponse(true))); 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; 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) { ChatApiParams p = null; if ((p = TryJsonParse <ChatApiParams>(ctx, postData)) == null) { return; } ChatSession s = GetSession(ctx); if (p.Action.Equals("chat_send")) { Logger.Log(LogLevel.Verbose, "Processing webchat input: '{0}'", p.Message); ProcessInput(p.Message, s); } mtx.WaitOne(); WebAdmin.SendHtml(ctx, ToJson(s.Messages)); s.Messages.Clear(); mtx.ReleaseMutex(); }
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) { 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; } }
public override void HandleContext(HttpListenerContext ctx, WebUser user) { string url = ctx.Request.Url.AbsolutePath; byte[] buffer = null; Logger.Log(LogLevel.Verbose, Log.WEB_SERVE_STATIC, url); try { buffer = WebAdmin.LoadBinary(url); } catch (FileNotFoundException) { Logger.Log(LogLevel.Verbose, Log.WEB_STATIC_NOT_FOUND, url); WebAdmin.SendHttpStatus(ctx, HttpStatusCode.NotFound); } //TODO: clean that up if (url.EndsWith(".css")) { ctx.Response.ContentType = "text/css"; } if (url.EndsWith(".js")) { ctx.Response.ContentType = "text/javascript"; } if (url.EndsWith(".png")) { ctx.Response.ContentType = "image/png"; } if (buffer != null) { WebAdmin.SendBuffer(ctx, buffer); } }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { GeneralSettingsApiParams p = null; if ((p = TryJsonParse <GeneralSettingsApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "general_get": ServerSettings s = Core.Server.Settings; int ups = s.ForgiveTKs; s.ForgiveTKs = (int)(1.0f / I2f(s.ForgiveTKs)); WebAdmin.SendHtml(ctx, ToJson(new GeneralSettingsResponse(s, GetNetworkDevices()))); s.ForgiveTKs = ups; break; case "general_set": WebServer.LogAudit(user, "modified general settings"); p.Settings.ForgiveTKs = F2i(1.0f / p.Settings.ForgiveTKs); Core.Server.Settings.UpdateFrom(p.Settings, ConfigSection.GENERAL); try { Core.Server.Settings.WriteToFile(Core); WebAdmin.SendHtml(ctx, ToJson(new GeneralSettingsSaveResponse())); } catch (Exception e) { WebAdmin.SendHtml(ctx, ToJson(new GeneralSettingsSaveResponse(e))); } 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; } }
public virtual void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { WebAdmin.SendHtml(ctx, "Change me."); }