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; } }
//******************************************************************************************** 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(); }