Пример #1
0
        public static Connector AsyncPrepareSocket(ISocketWithTimeoutClient client, LocalShellTerminalParam param)
        {
            Connector c = new Connector(param, client);

            GUtil.CreateThread(new ThreadStart(c.AsyncConnect)).Start();
            return(c);
        }
Пример #2
0
 //接続先のSocketを準備して返す。失敗すればparentを親にしてエラーを表示し、nullを返す。
 public static ConnectionTag PrepareSocket(IWin32Window parent, LocalShellTerminalParam param)
 {
     try {
         return(new Connector(param).Connect());
     }
     catch (Exception ex) {
         string key = IsCygwin(param)? "Message.CygwinUtil.FailedToConnect" : "Message.SFUUtil.FailedToConnect";
         GUtil.Warning(parent, GEnv.Strings.GetString(key) + ex.Message);
         return(null);
     }
 }
Пример #3
0
 public void ApplyParam(LocalShellTerminalParam param)
 {
     _param = param;
     if (param is CygwinTerminalParam)
     {
         this.Text = GApp.Strings.GetString("Form.CygwinLoginDialog.TextCygwin");
     }
     else
     {
         this.Text = GApp.Strings.GetString("Form.CygwinLoginDialog.TextSFU");
     }
 }
Пример #4
0
 protected static void PrepareEnv(LocalShellTerminalParam p)
 {
     if (!_cygwinDLL_loaded && IsCygwin(p))
     {
         //初回のみ、cygwin.dllがロードできるように環境変数を追加 SFUのときは余計だが
         char[] buf    = new char[1024];
         int    n      = Win32.GetEnvironmentVariable("PATH", buf, buf.Length);
         string newval = new string(buf, 0, n) + ";" + CygwinUtil.GuessRootDirectory() + "\\bin";
         Win32.SetEnvironmentVariable("PATH", newval);
         _cygwinDLL_loaded = true;
     }
 }
        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);
            }
        }
Пример #6
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (_param == null)
            {
                _param = new CygwinTerminalParam();                 //デフォルト値で埋める
            }
            else
            {
                _param = (LocalShellTerminalParam)_param.Clone();
            }
            _param.RenderProfile = null;
            _param.Caption       = null;

            _homeDirectoryBox.Text = _param.Home;
            _shellBox.Text         = _param.Shell;

            StringCollection c = GApp.ConnectionHistory.LogPaths;

            foreach (string p in c)
            {
                _logFileBox.Items.Add(p);
            }

            if (GApp.Options.DefaultLogType != LogType.None)
            {
                _logTypeBox.SelectedIndex = (int)GApp.Options.DefaultLogType;
                string t = GUtil.CreateLogFileName("cygwin");
                _logFileBox.Items.Add(t);
                _logFileBox.Text = t;
            }
            else
            {
                _logTypeBox.SelectedIndex = 0;
            }

            AdjustUI();
        }
        public ConnectionTag SilentNewConnection(TerminalParam p)
        {
            if (!CheckPaneCount())
            {
                return(null);
            }

            ConnectionTag con = null;

            if (p is SSHTerminalParam)
            {
                SSHTerminalParam tp = (SSHTerminalParam)p;
                con = CommunicationUtil.CreateNewConnection(tp, null);
            }
            else if (p is TelnetTerminalParam)
            {
                TelnetTerminalParam tp = (TelnetTerminalParam)p;
                con = CommunicationUtil.CreateNewConnection(tp);
            }
            else if (p is SerialTerminalParam)
            {
                SerialTerminalParam tp = (SerialTerminalParam)p;
                con = CommunicationUtil.CreateNewSerialConnection(_frame, tp);
            }
            else if (p is LocalShellTerminalParam)
            {
                LocalShellTerminalParam tp = (LocalShellTerminalParam)p;
                con = CommunicationUtil.CreateNewLocalShellConnection(_frame, tp);
            }

            if (con != null)
            {
                AddNewTerminal(con);
            }
            return(con);
        }
Пример #8
0
 public static ConnectionTag CreateNewLocalShellConnection(IWin32Window parent, LocalShellTerminalParam param)
 {
     return(LocalShellUtil.PrepareSocket(parent, param));
 }
Пример #9
0
 public Connector(LocalShellTerminalParam param, ISocketWithTimeoutClient client)
 {
     _param  = param;
     _client = client;
 }
Пример #10
0
 public Connector(LocalShellTerminalParam param)
 {
     _param = param;
 }
Пример #11
0
 private static bool IsCygwin(LocalShellTerminalParam tp)
 {
     return(tp is CygwinTerminalParam);
 }