private void CheckCredentials() { lastError = CredentialError.None; var sshClient = new SshClient(RemoteFacilities.NewConnectionInfo(Host.Text, (int)Port.Value, Username.Text, Password.Password)); try { sshClient.Connect(); if (sshClient.IsConnected) { var command = sshClient.CreateCommand("cd " + Location.Text); // Ignore output command.Execute(); if (!string.IsNullOrEmpty(command.Error)) { lastError = CredentialError.InvalidPath; } } } catch (Exception e) when(e is SshException || e is SocketException) { lastError = CredentialError.InvalidHost; } catch (SshAuthenticationException) { lastError = CredentialError.InvalidUserOrPassword; } }
/// <summary> /// Initialize instance of <see cref="CredentialsDialog"/> using the editor dialog service <paramref name="service"/>. /// </summary> /// <param name="service">Editor dialog service to use to display various dialogs.</param> public CredentialsDialog(IEditorDialogService service) : this() { // Setup our dialogs using saved settings. Service = service; Host.Text = StrideEditorSettings.Host.GetValue(); Port.Value = StrideEditorSettings.Port.GetValue(); Username.Text = StrideEditorSettings.Username.GetValue(); Password.Password = RemoteFacilities.Decrypt(StrideEditorSettings.Password.GetValue()); Location.Text = StrideEditorSettings.Location.GetValue(); }
/// <summary> /// Action executed when pressing the OK button. /// </summary> /// <param name="sender">Not used.</param> /// <param name="e">Not used.</param> private void OnOk(object sender, RoutedEventArgs e) { CheckCredentials(); if (lastError == CredentialError.None) { StrideEditorSettings.Host.SetValue(Host.Text); StrideEditorSettings.Port.SetValue((int)Port.Value); StrideEditorSettings.Username.SetValue(Username.Text); StrideEditorSettings.Password.SetValue(RemoteFacilities.Encrypt(Password.Password)); StrideEditorSettings.Location.SetValue(Location.Text); StrideEditorSettings.AskForCredentials.SetValue(CheckBox.IsChecked == null || !CheckBox.IsChecked.Value); StrideEditorSettings.Save(); AreCredentialsValid = true; Result = Core.Presentation.Services.DialogResult.Ok; Close(); } else { AreCredentialsValid = false; DisplayError(); } }