public IActionResult Status(string rig)
        {
            //known rig
            if (APIComm.Rigs.ContainsKey(rig))
            {
                //fetch fresh stats
                var last      = APIComm.Rigs[rig];
                var rigstatus = APIComm.GetRigStatus(last.Port, last.RigName, last.IP).Result;

                //we hafe fresh stats
                if (rigstatus != null)
                {
                    return(View(APIComm.Rigs[rig]));
                }
                else
                {
                    ViewBag.WasNotAbleToConnect = true;
                    return(View(last));
                }
            }
            else
            {
                var rigstatus = APIComm.GetRigStatus("5777", "", rig).Result;

                //we hafe fresh stats
                if (rigstatus != null)
                {
                    return(View(APIComm.Rigs[rig]));
                }
                else
                {
                    return(StatusCode(404, "Rig not found"));
                }
            }
        }
        public IActionResult Config(string rig)
        {
            var rigConfig = APIComm.GetRigConfig(rig).Result;

            ViewBag.Address = rig;
            return(View("Config", rigConfig));
        }
        public IActionResult SetPrimaryConnectioins(string rig)
        {
            ViewBag.Address = rig;
            var rigConfig   = APIComm.GetRigConfig(rig).Result;
            var primaryConn = rigConfig.PrimaryConnection;

            return(View("SetConnection", primaryConn));
        }
        public async Task <IActionResult> Hello(string port = "", string name = "")
        {
            var ip = HttpContext.Connection.RemoteIpAddress.MapToIPv4();

            port = string.IsNullOrEmpty(port) ? "5777" : port;
            var r = await APIComm.GetRigStatus(port, name, ip.ToString());

            return((r != null) ? (IActionResult)Ok() : StatusCode(500, "Expecting SimpleStatus"));
        }
        public IActionResult Remove(string rig)
        {
            var rigStatus = APIComm.Rigs[rig];

            APIComm.Rigs.Remove(rig, out RigStatus stat);
            APIComm.SaveRigsToFile();

            return(RedirectToAction("Index"));
        }
        public IActionResult AddMany(string rigs)
        {
            var           splitted = rigs.Split(new string[] { Environment.NewLine, "\r\n", "\r", "\n", " ", "," }, StringSplitOptions.RemoveEmptyEntries);
            List <string> notAdded;
            int           added;

            APIComm.AddMultipleRigs(splitted, out notAdded, out added);
            TempData["Added"]    = added; //TempData survive redirect (uses session under the hood)
            TempData["NotAdded"] = string.Join(", ", notAdded);
            return(RedirectToAction("Index"));
        }
        public IActionResult Config(Config config, string rig)
        {
            var succ = APIComm.PostRigConfig(rig, config).Result;

            if (succ)
            {
                return(Json(new { success = true }));
            }
            else
            {
                return(Json(new { success = false }));
            }
        }
        public IActionResult SetPrimaryConnectioins(string rig, Connection connection)
        {
            var succ = APIComm.PostRigPrimaryConnection(rig, connection).Result;

            if (succ)
            {
                return(Json(new { success = true }));
            }
            else
            {
                return(Json(new { success = false }));
            }
        }