public CommandResult NewConnection(TerminalParam p) { if (!CheckPaneCount()) { return(CommandResult.Denied); } ConnectionTag con = null; if (p is TCPTerminalParam) { TCPTerminalParam param = (TCPTerminalParam)p; if (param.IsSSH) { SSHShortcutLoginDialog dlg = new SSHShortcutLoginDialog((SSHTerminalParam)param); if (GCUtil.ShowModalDialog(_frame, dlg) == DialogResult.OK) { con = dlg.Result; } } else { con = CommunicationUtil.CreateNewConnection(param); } } else if (p is SerialTerminalParam) { SerialTerminalParam param = (SerialTerminalParam)p; con = CommunicationUtil.CreateNewSerialConnection(_frame, param); } else if (p is LocalShellTerminalParam) { LocalShellTerminalParam param = (LocalShellTerminalParam)p; con = CommunicationUtil.CreateNewLocalShellConnection(_frame, param); } if (con != null) { AddNewTerminal(con); return(CommandResult.Success); } else { return(CommandResult.Cancelled); } }
public ITerminalConnection EstablishConnection(IPoderosaMainWindow window, ITerminalParameter destination, ITerminalSettings settings) { ISSHLoginParameter ssh = (ISSHLoginParameter)destination.GetAdapter(typeof(ISSHLoginParameter)); if (ssh.LetUserInputPassword && ssh.AuthenticationType != Granados.AuthenticationType.KeyboardInteractive) { //ダイアログで入力を促して接続 SSHShortcutLoginDialog dlg = new SSHShortcutLoginDialog(window, ssh, settings); if (dlg.ShowDialog(window.AsForm()) == DialogResult.OK) { ITerminalConnection con = dlg.Result; AdjustCaptionAndText(settings, ((ITCPParameter)con.Destination.GetAdapter(typeof(ITCPParameter))).Destination, StartCommandIcon.NewConnection); return con; } else return null; } else { //主にReproduceやマクロ。設定済みのパスワードで接続 IProtocolService protocolservice = TerminalSessionsPlugin.Instance.ProtocolService; ISynchronizedConnector conn = protocolservice.CreateFormBasedSynchronozedConnector(window); IInterruptable r = protocolservice.AsyncSSHConnect(conn.InterruptableConnectorClient, ssh); AdjustCaptionAndText(settings, ((ITCPParameter)destination.GetAdapter(typeof(ITCPParameter))).Destination, StartCommandIcon.NewConnection); return conn.WaitConnection(r, TerminalSessionsPlugin.Instance.TerminalSessionOptions.TerminalEstablishTimeout); //時間? } }