Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        private void ClientForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            RemoteDesktopClientForm clientForm = (RemoteDesktopClientForm)sender;

            clientForm.FormClosed -= new FormClosedEventHandler(ClientForm_FormClosed);
            mActiveWindows.Remove(clientForm);
        }
Esempio n. 3
0
        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;
                }
            }
        }