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; } }
//******************************************************************************************** public void Connect() { loadingCircle1.BringToFront(); loadingCircle1.Active = true; loadingCircle1.InnerCircleRadius = 15; loadingCircle1.OuterCircleRadius = 30; loadingCircle1.SpokeThickness = 5; loadingCircle1.Top = (this.Height / 2) + 10; loadingCircle1.Left = (this.Width / 2) - 40; loadingCircle1.Visible = true; SetStatusText("Connecting..."); switch (server.SshTerminal) { case 1: { if (File.Exists("putty\\putty.exe")) { CreatePuttySession(); puttyPanel.ApplicationParameters = String.Format(" -load \"{4}\" {0} -P {5} -l {1} -pw {2} {3}", server.Host, server.Username, server.Password, (server.SSH1) ? "-1" : "-2", String.Format("XwRemote{0}", server.ID), server.Port); ThreadPool.QueueUserWorkItem(new WaitCallback(ConnectTrd), this); } else { loadingCircle1.Visible = false; SetStatusText("Putty not found"); } } break; case 2: { poderosaPanel.Connected += PoderosaPanel_Connected; poderosaPanel.Disconnected += PoderosaPanel_Disconnected; poderosaPanel.LoggedOff += PoderosaPanel_LoggedOff; poderosaPanel.AsyncConnect(); } break; } }