private bool HandleLoginResult(RemoteDesktopClientForm clientForm, LoginResponseStateEnum loginResult) { bool result = false; switch (loginResult) { case LoginResponseStateEnum.AccessDenied: MessageBox.Show(clientForm, "Unable to authenticate. Access denied.", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); break; case LoginResponseStateEnum.AccessGranted: result = true; clientForm.StartEventPump(); break; case LoginResponseStateEnum.ServiceBusy: MessageBox.Show(clientForm, "Unable to authenticate. Service is busy.", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); break; case LoginResponseStateEnum.ServiceInactive: MessageBox.Show(clientForm, "Unable to authenticate. Service is inactive.", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); break; } return(result); }
private void ClientForm_FormClosed(object sender, FormClosedEventArgs e) { RemoteDesktopClientForm clientForm = (RemoteDesktopClientForm)sender; clientForm.FormClosed -= new FormClosedEventHandler(ClientForm_FormClosed); mActiveWindows.Remove(clientForm); }
private void ConnectEventHandler(object sender, EventArgs e) { AuthenticationModeEnum mode = AuthenticationModeEnum.UsernameAndPassword; RemoteDesktopClientForm clientForm = new RemoteDesktopClientForm(); try { clientForm.Connect(connectControl.Locator.ChannelId, connectControl.SelectedProvider.RemoteEndPoint); mode = clientForm.GetAuthenticationMode(); } catch (Exception) { clientForm.Dispose(); MessageBox.Show(this, "Failed to connect to the remote host.", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } mActiveWindows.Add(clientForm); clientForm.FormClosed += new FormClosedEventHandler(ClientForm_FormClosed); clientForm.Show(this); while (true) { switch (mode) { case AuthenticationModeEnum.OnlyPassword: case AuthenticationModeEnum.UsernameAndPassword: using (AuthenticationForm authForm = new AuthenticationForm(mode)) { if (authForm.ShowDialog(clientForm) == System.Windows.Forms.DialogResult.OK) { try { if (HandleLoginResult(clientForm, clientForm.Login(authForm.Username, authForm.Password))) { return; } } catch (Exception ex) { MessageBox.Show(clientForm, string.Format("Failed to login. Reason: {0}", ex.Message), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); if (!clientForm.IsConnected) { clientForm.Close(); //clientForm.Dispose(); return; } } } else { clientForm.Close(); clientForm.Dispose(); return; } } break; case AuthenticationModeEnum.Off: { try { if (HandleLoginResult(clientForm, clientForm.Login(string.Empty, string.Empty))) { return; } } catch (Exception ex) { clientForm.Close(); clientForm.Dispose(); MessageBox.Show(clientForm, string.Format("Failed to login. Reason: {0}", ex.Message), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; } } }