public MainWindow() { DataContext = this; wantsConnect = false; sReroute = new StreamReroute(); InitializeComponent(); if (Properties.Settings.Default.needsUpgrade) { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.needsUpgrade = false; Properties.Settings.Default.Save(); } this.Topmost = true; PopulateComboBox(); bool needsLoginWindow = true; if (checkLogin()) { // VPN for some reason still in place if (vpnControl.checkVPNExists()) { //initTimer(); needsLoginWindow = false; setConnecting(); } // else check certificate installed; then go ahead and add back VPN else if (VPNControl.checkCertificateInstalled() && !noInternet) { needsLoginWindow = false; vpnControl.addVPN(Properties.Settings.Default.region); setConnecting(); //initTimer(); } else if (noInternet && !needsLoginWindow) { System.Windows.Forms.MessageBox.Show("Can't connect to server."); } else if (!VPNControl.checkCertificateInstalled() && !noInternet) { // reinstall certificates var getKeyResponse = apiControl.getKey(); var getKeyResponseString = getKeyResponse.Result.Content.ReadAsStringAsync(); var getKeyDict = JsonConvert.DeserializeObject <Dictionary <string, string> >(getKeyResponseString.Result); if (getKeyDict.ContainsKey("b64")) { string tempFile = System.IO.Path.GetTempFileName(); File.WriteAllBytes(tempFile, Convert.FromBase64String(getKeyDict["b64"])); VPNControl.addCertificate(tempFile); needsLoginWindow = false; vpnControl.addVPN(Properties.Settings.Default.region); setConnecting(); } } else { needsLoginWindow = true; } } // if not ready to run VPN, send to login window if (needsLoginWindow) { handleLoginForm(false); } else { notifyIcon.Visible = true; initTimer(); } //initNotifyIcon(); // For crash testing //int x = 0; //int y = 1 / x; //SetWindowPosition(); }
private void submitButton_Click(object sender, RoutedEventArgs e) { if (emailTextBox.Text != "" && passwordBox.Password != "" && (!isSignUp || passwordBox.Password == passwordConfirmBox.Password)) { submitButton.IsEnabled = false; if (!initialClick) { submitHideButton.Visibility = Visibility.Hidden; // hide enable animation on first appearance } username = password = null; new System.Threading.Thread(() => { this.Dispatcher.Invoke(() => { Properties.Settings.Default.username = username = emailTextBox.Text; password = passwordBox.Password; Properties.Settings.Default.password = DPAPIInterface.Protect(password, null, System.Security.Cryptography.DataProtectionScope.CurrentUser); Properties.Settings.Default.Save(); }); Task <HttpResponseMessage> response = null; while (username == null || password == null) { Thread.Sleep(10); } bool hasError = false; // only create user in register if (isSignUp) { if (!apiControl.checkVersion1Login(username, password)) { response = apiControl.signUp(username, password); var signUpResponseString = response.Result.Content.ReadAsStringAsync(); try { var jsonDict = JsonConvert.DeserializeObject <Dictionary <string, string> >(signUpResponseString.Result); if (jsonDict.ContainsKey("code") && jsonDict["code"] == "3") { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Password must contain a capital letter, contain a\nnumber, and contain a special character."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); hasError = true; } } catch (AggregateException ae) { } } } if (!hasError) { try { APIControl.SignInResponse signInResponse = apiControl.signIn(username, password); if (signInResponse == APIControl.SignInResponse.AccountNotFound) { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Incorrect email or password."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); } else if (signInResponse == APIControl.SignInResponse.AwaitingVerification) { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Please confirm email."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); } else { var getKeyResponse = apiControl.getKey(); var getKeyResponseString = getKeyResponse.Result.Content.ReadAsStringAsync(); if (getKeyResponse.Result.StatusCode == System.Net.HttpStatusCode.OK) { var testDict = JsonConvert.DeserializeObject <Dictionary <string, string> >(getKeyResponseString.Result); if (testDict.ContainsKey("code") && testDict["code"] == "1") { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Please confirm email."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); } // else finished registration and subscription else if (!testDict.ContainsKey("code")) { this.Dispatcher.Invoke(() => { isSubscribed = true; emailLabel.Content = Properties.Settings.Default.username; confirmEmailLabel.Visibility = Visibility.Hidden; //wizardPages1.SelectedTab = tabPage5; Dispatcher.BeginInvoke((Action)(() => loginTabControl.SelectedIndex = 2)); submitButton.IsEnabled = true; }); } else { this.Dispatcher.Invoke(() => { isSubscribed = false; confirmEmailLabel.Visibility = Visibility.Hidden; emailLabel.Content = Properties.Settings.Default.username; initBrowser(); //wizardPages1.SelectedTab = tabPage5; // go to EULA after sign in page Dispatcher.BeginInvoke((Action)(() => loginTabControl.SelectedIndex = 2)); submitButton.IsEnabled = true; }); } } else if (getKeyResponse.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { var testDict = JsonConvert.DeserializeObject <Dictionary <string, string> >(getKeyResponseString.Result); if (testDict.ContainsKey("code") && testDict["code"] == "1") { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Please confirm email."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); } else { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Incorrect email or password."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); } } else if (getKeyResponse.Result.StatusCode == System.Net.HttpStatusCode.BadRequest) { this.Dispatcher.Invoke(() => { confirmEmailLabel.Content = "Account does not include desktop access.\nUpgrade to unlimited."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; }); } } } catch (AggregateException ae) { MessageBox.Show("Can't connect to internet."); this.Dispatcher.Invoke(() => { submitButton.IsEnabled = true; }); } } }).Start(); } // else if passwords don't match else if (isSignUp && passwordBox.Password != "" && passwordBox.Password != passwordConfirmBox.Password) { confirmEmailLabel.Content = "Passwords do not match."; confirmEmailLabel.Visibility = Visibility.Visible; submitButton.IsEnabled = true; } else { submitButton.IsEnabled = true; } initialClick = false; }