コード例 #1
0
        public ActionResult Index()
        {
            var serverModels        = _serverGetter.Get();
            var serverCurrentInfos  = serverModels.Select(GetServerCurrentInfo);
            var serverInfoViewModel = new ServerInfoViewModel(serverCurrentInfos);

            return(View(serverInfoViewModel));
        }
コード例 #2
0
        private void ForceBanSync()
        {
            var serverModels = _serverGetter.Get();

            foreach (var serverModel in serverModels)
            {
                _serverAdminCommandSender.Send(serverModel.WebAdminBaseUrl, UserName, PlayerId, "sh_forcebansync", false);
            }
        }
コード例 #3
0
        public ActionResult Restart(int serverId)
        {
            var server = _serverGetter.Get().Single(x => x.ID.Equals(serverId));

            if (PlayerQualifies)
            {
                var cacheKey          = string.Format("{0}RestartedWhen{1}", UserName, server.ID);
                var whenLastRestarted = Convert.ToDateTime(HttpContext.Cache[cacheKey] ?? DateTime.MinValue);
                if (whenLastRestarted <= DateTime.Now.AddMinutes(-2))
                {
                    var serverCurrentInfoDictionary = _serverCurrentInfoDictionaryDictionaryGetter.Get(server);
                    if (!(bool)serverCurrentInfoDictionary["success"])
                    {
                        Thread.Sleep(5000);
                        serverCurrentInfoDictionary = _serverCurrentInfoDictionaryDictionaryGetter.Get(server);
                        if (!(bool)serverCurrentInfoDictionary["success"])
                        {
                            Thread.Sleep(5000);
                            serverCurrentInfoDictionary = _serverCurrentInfoDictionaryDictionaryGetter.Get(server);
                            if (!(bool)serverCurrentInfoDictionary["success"])
                            {
                                _serverProcessCommandSender.Restart(serverId);
                                TempData["Success"]         = string.Format("Restart performed on {0}.", server.Name);
                                HttpContext.Cache[cacheKey] = DateTime.Now;
                            }
                            else
                            {
                                TempData["Error"] = "Server queried successfully. Restart halted.";
                            }
                        }
                        else
                        {
                            TempData["Error"] = "Server queried successfully. Restart halted.";
                        }
                    }
                    else
                    {
                        TempData["Error"] = "Server queried successfully. Restart halted.";
                    }
                }
                else
                {
                    TempData["Error"] = string.Format("Wait before again restarting {0}.", server.Name);
                }
            }
            else
            {
                TempData["Error"] = "You are not qualified to use this command. Restart halted.";
            }
            return(RedirectToAction("Restart"));
        }
コード例 #4
0
        protected override string GetResponseJson(string realmName, HttpRequest request, MySqlConnection connection)
        {
            var serverSimpleName = Convert.ToString(request["s"]);
            var shouldAnnounce   = Convert.ToBoolean(request["a"]);
            var command          = Convert.ToString(request["c"]);
            var timeToRestart    = Convert.ToInt32(request["t"]);
            var serverModels     = _serverGetter.Get();
            var serverModel      = serverModels.Single(x => x.Name.Equals(serverSimpleName));

            _serverAdminCommandSender.Send(serverModel.WebAdminBaseUrl, "Portal", 0, command, shouldAnnounce);
            if (timeToRestart > 0)
            {
                new Thread(() =>
                {
                    Thread.CurrentThread.IsBackground = true;
                    Thread.Sleep(timeToRestart * 1000);
                    _serverProcessCommandSender.Restart(serverModel.InstanceIndex);
                }).Start();
            }
            var result = JsonConvert.SerializeObject(new Dictionary <string, object> {
                { "success", true }
            });

            return(result);
        }
コード例 #5
0
        public JsonResult SearchPlayers(string q)
        {
            var players      = new List <IServerPlayer>();
            var serverModels = _serverGetter.Get();

            foreach (var serverModel in serverModels)
            {
                var serverCurrentInfoDictionary = _serverCurrentInfoDictionaryGetter.Get(serverModel);
                var serverCurrentInfo           = _serverCurrentInfoAdapter.Adapt(serverCurrentInfoDictionary);
                players.AddRange(serverCurrentInfo.Players);
            }
            var recentPlayers = _recentPlayersGetter.Get("ns2").ToList();

            foreach (var player in players)
            {
                if (!recentPlayers.Any(x => Equals(x.Id, player.PlayerId)))
                {
                    recentPlayers.Add(new BucketPlayer(player.PlayerName, player.PlayerId));
                }
            }
            var resultData = recentPlayers.Where(x => x.Name.ToLower().Contains(q.ToLower())).Select(x => new { name = x.Name, id = x.Id }).ToList();
            var result     = Json(resultData, JsonRequestBehavior.AllowGet);

            return(result);
        }
コード例 #6
0
        public ActionResult IsOnTheGameServer()
        {
            var isOnTheGameServer = false;
            var serverModels      = _serverGetter.Get();

            foreach (var serverModel in serverModels)
            {
                var serverCurrentInfoDictionary = _serverCurrentInfoDictionaryGetter.Get(serverModel);
                var serverCurrentInfo           = _serverCurrentInfoAdapter.Adapt(serverCurrentInfoDictionary);
                if (serverCurrentInfo.Players.Any(x => x.PlayerId.Equals(PlayerId)))
                {
                    isOnTheGameServer = true;
                }
            }
            var result = Json(isOnTheGameServer, JsonRequestBehavior.AllowGet);

            return(result);
        }