Exemple #1
0
        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()));
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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;
            }
        }
Exemple #5
0
        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));
        }
Exemple #6
0
 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);
        }
Exemple #9
0
        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)));
            }
        }
Exemple #10
0
        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);
        }
Exemple #12
0
        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");
             }
         }
     }
 }
Exemple #14
0
        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;
            }
        }
Exemple #15
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;
            }
        }
Exemple #16
0
        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();
        }
Exemple #17
0
        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;
            }
        }
Exemple #18
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;
            }
        }
Exemple #19
0
        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);
            }
        }
Exemple #20
0
        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;
            }
        }
Exemple #21
0
        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;
            }
        }
Exemple #22
0
 public virtual void HandlePost(HttpListenerContext ctx, WebUser user, string postData)
 {
     WebAdmin.SendHtml(ctx, "Change me.");
 }