private void SaveAcctButton_Click(object sender, EventArgs e) { string username = UserTextBox.Text; string password = PwsdTextBox.Text; // No username and/or password entered if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { MessageBox.Show("No username and/or password entered!", "Incorrect Login Information"); return; } else { string text_body = $"This will create a QuickLogin account for {username}, which allows you to quickly login without entering any login credentials. " + Environment.NewLine + Environment.NewLine + $"Your login information for this account will be stored locally, with your password encrypted. " + $" However, a risk is still present whenever personal account data is stored locally, and your login info can still be susceptible to bad actors. " + Environment.NewLine + Environment.NewLine + $"Do you still want to create a QuickLogin account for {username}?"; DialogResult dialogResult = MessageBox.Show(text_body, "Confirm Quick Account", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { LauncherProgram.CreateQuickAccount(username, password); RefreshList(); } else if (dialogResult == DialogResult.No) { return; } } }
private void RemoveAcctButton_Click(object sender, EventArgs e) { String usr = QuickLoginComboBox.Text; LauncherProgram.RemoveUser(usr); RefreshList(); }
public void RefreshList() { QuickLoginComboBox.DataSource = LauncherProgram.ReturnAccounts(); }
private void QuickLoginButton_Click(object sender, EventArgs e) { String usr = QuickLoginComboBox.Text; LauncherProgram.QuickLogin(usr); }
public static void Login(string usr, string pws, string responseStatus = "none") { // Checks for username and password if (string.IsNullOrEmpty(usr) || string.IsNullOrEmpty(pws)) { MessageBox.Show("No username or password entered!", "Incorrect Login Information"); return; } else { // Set username and password as globals for future use LocalGlobals.usr = usr; LocalGlobals.pws = LauncherProgram.EncodePasswordToBase64(pws); var data = new NameValueCollection(); // Enters login queue switch (responseStatus) { // Second POST before logging in. case "delayed": data["queueToken"] = LocalGlobals.queueToken; break; // User entered incorrect login details case "false": MessageBox.Show(LocalGlobals.banner, "Yipes!"); return; // Prompts user to enter 2FA or ToonGuard token to login case "partial": data["appToken"] = Interaction.InputBox(LocalGlobals.banner, "Authorization Token Needed", ""); data["authToken"] = LocalGlobals.responseToken; // Exit login sequence if auth pop up is closed if (string.IsNullOrWhiteSpace(data["appToken"])) { return; } break; // Intial POST to login case "none": data["username"] = usr; data["password"] = LauncherProgram.DecodeFrom64(LocalGlobals.pws); break; } // Sends POST response var login_process = HTTPPostClient(data); if (login_process is String) { // Good POST request, client now starts login process. HTTPStatus(login_process); } else { // HTTPPostClient has run into an error and has notfied the user. return; } } }
public static void HTTPStatus(string response) { // JObject is used to get values from the response dynamic json = JObject.Parse(response); switch (Convert.ToString(json.success)) { case "false": LocalGlobals.banner = json.banner; Login(LocalGlobals.usr, LauncherProgram.DecodeFrom64(LocalGlobals.pws), Convert.ToString(json.success)); break; case "delayed": // Adds 1 second to delay LocalGlobals.timeToWait += 1000; Task.Delay(LocalGlobals.timeToWait).Wait(); // Sends another POST request with the queueToken only LocalGlobals.queueToken = json.queueToken; Login(LocalGlobals.usr, LauncherProgram.DecodeFrom64(LocalGlobals.pws), Convert.ToString(json.success)); break; case "partial": LocalGlobals.banner = json.banner; // Adds 1 second to delay LocalGlobals.timeToWait += 1000; Task.Delay(LocalGlobals.timeToWait).Wait(); // Sends another POST request with the authToken and responseToken only LocalGlobals.responseToken = json.responseToken; Login(LocalGlobals.usr, LauncherProgram.DecodeFrom64(LocalGlobals.pws), Convert.ToString(json.success)); break; case "true": LocalGlobals.timeToWait = 0; LocalGlobals.GETInterval = 150000; // Logins to game using credientials Console.WriteLine("SUCCESS: Logging you in to the Tooniverse..."); Environment.SetEnvironmentVariable("TTR_GAMESERVER", Convert.ToString(json.gameserver)); Console.WriteLine($"GAMESERVER: {Convert.ToString(json.gameserver)}"); Environment.SetEnvironmentVariable("TTR_PLAYCOOKIE", Convert.ToString(json.cookie)); string dir = Convert.ToString(Properties.Settings.Default["GameDirectory"]); ProcessStartInfo startInfo = new ProcessStartInfo { FileName = "TTREngine.exe", WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden }; try { Directory.SetCurrentDirectory(dir); // Starts game MessageBox.Show("Logging you in to the Tooniverse...", "Successful Login"); Process.Start(startInfo); } catch (Exception start_error) { MessageBox.Show(Convert.ToString(start_error), "Error!"); } break; } }