Beispiel #1
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"));
        }
Beispiel #2
0
        public ActionResult Manage()
        {
            var serverModels          = _serverGetter.Get();
            var serverSpectatorCounts = new Dictionary <string, int>();

            foreach (var serverModel in serverModels)
            {
                var serverCurrentInfoDictionary = _serverCurrentInfoDictionaryDictionaryGetter.Get(serverModel);
                var serverCurrentInfo           = _serverCurrentInfoAdapter.Adapt(serverCurrentInfoDictionary);
                var currentSpectatorCount       = serverCurrentInfo.Players.Count(x => x.IsSpectator);
                serverSpectatorCounts.Add(serverModel.Name, currentSpectatorCount);
            }
            var fullSpecOptionsModel = _fullSpecOptionsModelGetter.Get();
            var optedIn       = fullSpecOptionsModel.EnrolledPlayerIds.Any(x => x == PlayerId);
            var currentStatus = optedIn ? "opted in" : "opted out";

            ViewBag.CurrentStatus         = string.Format("You are currently {0}.", currentStatus);
            ViewBag.OptedIn               = optedIn;
            ViewBag.ServerSpectatorCounts = serverSpectatorCounts;
            return(View());
        }
Beispiel #3
0
        private IServerPlayer GetServerPlayer()
        {
            IServerPlayer result = null;
            var           _serverCurrentInfoDictionaryGetter = new ServerCurrentInfoDictionaryDictionaryGetter();
            var           _serverCurrentInfoAdapter          = new ServerCurrentInfoAdapter();
            var           _serverGetter = new ServerGetter();
            var           serverPlayers = new List <IServerPlayer>();
            var           serverModels  = _serverGetter.Get();

            foreach (var serverModel in serverModels)
            {
                var serverCurrentInfoDictionary = _serverCurrentInfoDictionaryGetter.Get(serverModel);
                var serverCurrentInfo           = _serverCurrentInfoAdapter.Adapt(serverCurrentInfoDictionary);
                serverPlayers.AddRange(serverCurrentInfo.Players);
            }
            var players = serverPlayers.Where(x => x.IpAddress.Equals(HttpContext.Current.Request.UserHostAddress)).ToList();

            if (players.Count() == 1)
            {
                result = players.First();
            }
            return(result);
        }