private void ShowLoginDialog()
        {
            LoginDialog loginDialog = new LoginDialog();

            if (loginDialog.ShowDialog(this) == DialogResult.OK)
            {
                TabPage            newTab          = new TabPage(loginDialog.HostName);
                SshTerminalControl terminalControl = new SshTerminalControl
                {
                    Font         = new Font("Consolas", 14),
                    ForeColor    = Color.LightGray,
                    BackColor    = Color.Black,
                    HostName     = loginDialog.HostName,
                    Username     = loginDialog.Username,
                    Port         = loginDialog.Port,
                    Dock         = DockStyle.Fill,
                    TerminalType = loginDialog.TerminalType,
                    SshProtocol  = loginDialog.ProtocolType
                };

                if (!string.IsNullOrEmpty(loginDialog.IdentityFile))
                {
                    terminalControl.IdentityFile = loginDialog.IdentityFile;
                }

                else if (!string.IsNullOrEmpty(loginDialog.Password))
                {
                    terminalControl.Password = new SecureString();

                    foreach (char character in loginDialog.Password)
                    {
                        terminalControl.Password.AppendChar(character);
                    }
                }

                terminalControl.Disconnected += terminalControl_Disconnected;
                terminalControl.LoggedOff    += terminalControl_LoggedOff;

                newTab.Controls.Add(terminalControl);

                _terminalTabs.TabPages.Insert(_terminalTabs.SelectedIndex, newTab);
                _terminalTabs.SelectTab(newTab);

                terminalControl.AsyncConnect();
            }

            else if (_terminalTabs.TabCount > 1)
            {
                _terminalTabs.SelectedIndex = _terminalTabs.TabCount - 2;
            }
        }
示例#2
0
        //********************************************************************************************
        private void OnLoad(object sender, EventArgs e)
        {
            if (server.Port == 0)
            {
                server.Port = 22;
            }

            SuspendLayout();

            switch (server.SshTerminal)
            {
            case 1:
            {
                PuttyClosedCallback closedCallback = delegate(bool closed)
                {
                    BeginInvoke((MethodInvoker) delegate
                        {
                            ((KRBTabControl)(Parent.Parent)).TabPages.Remove((TabPageEx)Parent);
                            DeletePuttySession();
                        });
                };

                PuttyStartedCallback startedCallback = delegate()
                {
                    BeginInvoke((MethodInvoker) delegate
                        {
                            statusLabel.Visible    = false;
                            loadingCircle1.Visible = false;
                            puttyPanel.Visible     = true;
                        });
                };

                puttyPanel                       = new ApplicationPanel();
                puttyPanel.Dock                  = System.Windows.Forms.DockStyle.Fill;
                puttyPanel.ApplicationName       = @"putty\putty.exe";
                puttyPanel.ApplicationParameters = String.Empty;
                puttyPanel.Name                  = "puttyPanel";
                puttyPanel.Margin                = new Padding(10);
                puttyPanel.TabIndex              = 0;
                puttyPanel.m_CloseCallback       = closedCallback;
                puttyPanel.m_StartCallback       = startedCallback;
                puttyPanel.Visible               = false;
                Controls.Add(puttyPanel);
            }
            break;

            case 2:
            {
                poderosaPanel              = new SshTerminalControl();
                poderosaPanel.Dock         = System.Windows.Forms.DockStyle.Fill;
                poderosaPanel.Visible      = false;
                poderosaPanel.SshProtocol  = (server.SSH1) ? SshProtocol.SSH1 : SshProtocol.SSH2;
                poderosaPanel.TerminalType = TerminalType.XTerm;
                poderosaPanel.Font         = new Font("Consolas", Main.config.GetValue("DEFAULT_SSH_FONT_SIZE").ToIntOrDefault(10));
                poderosaPanel.BackColor    = Color.Black;
                poderosaPanel.ForeColor    = Color.LightGray;
                poderosaPanel.HostName     = server.Host;
                poderosaPanel.Port         = server.Port;
                //terminalControl.IdentityFile = loginDialog.IdentityFile;
                poderosaPanel.Username = server.Username;
                poderosaPanel.Password = new SecureString();
                foreach (char character in server.Password)
                {
                    poderosaPanel.Password.AppendChar(character);
                }
                Controls.Add(poderosaPanel);
            }
            break;

            default:
                throw new Exception($"Invalid Terminal Type: {server.SshTerminal}");
            }
            ResumeLayout();
        }