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);
        }
Example #5
0
        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;
                }
            }
        }
Example #6
0
        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;
            }
        }