IEnumerator TryHubLogin(HubLoginReq loginRequest) { var requestData = JsonUtility.ToJson(loginRequest); UnityWebRequest r = UnityWebRequest.Get(hubLogin + UnityWebRequest.EscapeURL(requestData)); yield return(r.SendWebRequest()); if (r.error != null) { Logger.Log("Hub Login request failed: " + r.error, Category.DatabaseAPI); yield break; } else { var response = JsonUtility.FromJson <ApiResponse>(r.downloadHandler.text); if (response.errorCode == 0) { string s = r.GetResponseHeader("set-cookie"); hubCookie = s.Split(';') [0]; Logger.Log("Hub connected successfully", Category.DatabaseAPI); r = UnityWebRequest.Get("http://ipinfo.io/ip"); yield return(r.SendWebRequest()); publicIP = Regex.Replace(r.downloadHandler.text, @"\t|\n|\r", ""); connectedToHub = true; } else { Logger.Log("Hub Login request failed: " + response.errorMsg, Category.DatabaseAPI); } } }
//Attempts to auth with api.unitystation.org for server status updates void AttemptHubConnection() { if (string.IsNullOrEmpty(config.HubUser) || string.IsNullOrEmpty(config.HubPass)) { Logger.Log("Invalid Hub creds found, aborting HUB connection", Category.DatabaseAPI); return; } var loginReq = new HubLoginReq { username = config.HubUser, password = config.HubPass }; Instance.StartCoroutine(Instance.TryHubLogin(loginReq)); }
IEnumerator SendServerStatus() { if (string.IsNullOrEmpty(config.HubUser) || string.IsNullOrEmpty(config.HubPass)) { Logger.Log("Invalid Hub creds found, aborting HUB connection", Category.DatabaseAPI); yield break; } var loginRequest = new HubLoginReq { username = config.HubUser, password = config.HubPass }; var requestData = JsonUtility.ToJson(loginRequest); UnityWebRequest req = UnityWebRequest.Get(hubLogin + UnityWebRequest.EscapeURL(requestData)); yield return(req.SendWebRequest()); if (req.error == null) { var response = JsonUtility.FromJson <ApiResponse>(req.downloadHandler.text); if (response.errorCode == 0) { string s = req.GetResponseHeader("set-cookie"); hubCookie = s.Split(';') [0]; req = UnityWebRequest.Get("http://ipinfo.io/ip"); yield return(req.SendWebRequest()); publicIP = Regex.Replace(req.downloadHandler.text, @"\t|\n|\r", ""); } else if (response.errorCode == 901) { Logger.Log("Hub API returned unauthorized credentials, aborting HUB connection", Category.DatabaseAPI); yield break; } else { Logger.Log("Hub API returned error code " + response.errorCode + ", aborting HUB connection\n" + response.errorMsg, Category.DatabaseAPI); yield break; } } else { Logger.Log("Hub API returned error, aborting HUB connection", Category.DatabaseAPI); yield break; } var status = new ServerStatus(); status.ServerName = config.ServerName; status.ForkName = buildInfo.ForkName; status.BuildVersion = buildInfo.BuildNumber; if (SubSceneManager.Instance == null) { status.CurrentMap = "loading"; } else { status.CurrentMap = SubSceneManager.ServerChosenMainStation; } status.GameMode = GameManager.Instance.GetGameModeName(); status.IngameTime = GameManager.Instance.roundTimer.text; if (PlayerList.Instance != null) { status.PlayerCount = PlayerList.Instance.ConnectionCount; } status.ServerIP = publicIP; status.ServerPort = GetPort(); status.WinDownload = config.WinDownload; status.OSXDownload = config.OSXDownload; status.LinuxDownload = config.LinuxDownload; status.fps = (int)FPSMonitor.Instance.Current; UnityWebRequest r = UnityWebRequest.Get(hubUpdate + UnityWebRequest.EscapeURL(JsonUtility.ToJson(status)) + "&user="******"Cookie", hubCookie); yield return(r.SendWebRequest()); if (r.error != null) { Logger.Log("Failed to update hub with server status" + r.error, Category.DatabaseAPI); } }