public ConnectionTag SilentOpenShortCut(string filename)
        {
            XmlReader r = null;

            try {
                if (GApp.Frame.WindowState == FormWindowState.Minimized)
                {
                    GApp.Frame.WindowState = FormWindowState.Normal;
                }
                ConfigNode    cn    = DOMNodeConverter.Read(XMLUtil.FileToDOM(filename).DocumentElement);
                TerminalParam param = TerminalParam.CreateFromConfigNode(cn);
                param.FeedLogOption();
                return(SilentNewConnection(param));
            }
            catch (Exception ex) {
                GUtil.Warning(_frame, ex.Message);
            }
            finally {
                if (r != null)
                {
                    r.Close();
                }
            }
            return(null);
        }
        //最新のMRUリストに更新
        public void Update(TerminalParam newparam_)
        {
            int           n        = 0;
            TerminalParam newparam = (TerminalParam)newparam_.Clone();

            newparam.LogPath = "";
            newparam.LogType = LogType.None;
            foreach (TerminalParam p in _history)
            {
                if (p.Equals(newparam))
                {
                    _history.RemoveAt(n);
                    _history.Insert(0, newparam);
                    return;
                }
                n++;
            }

            _history.Insert(0, newparam);
            //ランタイムに出てくる候補数は無制限にする
            if (_history.Count > 100)
            {
                _history.RemoveRange(GApp.Options.MRUSize, _history.Count - 100);
            }
        }
 public ConnectionTag OpenConnection(TerminalParam param)
 {
     lock (this) {
         _terminalParam = param;
         SendMessageCore(CService.OpenConnection);
     }
     return(_resultConnection);
 }
Beispiel #4
0
        private static ISimpleLogSettings CreateSimpleLogSettings(TerminalParam param)
        {
            ISimpleLogSettings logsettings = MacroPlugin.Instance.TerminalEmulatorService.CreateDefaultSimpleLogSettings();

            logsettings.LogPath   = param.LogPath;
            logsettings.LogType   = param.LogType;
            logsettings.LogAppend = param.LogAppend;
            return(logsettings);
        }
Beispiel #5
0
        public XmlLogger(StreamWriter w, TerminalParam p)
        {
            _writer = new XmlTextWriter(w);
            _writer.WriteStartDocument();
            _writer.WriteStartElement("terminal-log");

            //接続時のアトリビュートを書き込む
            _writer.WriteAttributeString("time", DateTime.Now.ToString());
        }
Beispiel #6
0
        /*
         * public TelnetCode[] RefusedOptions {
         *      get {
         *              return (TelnetCode[])_refusedOptions.ToArray(typeof(TelnetCode));
         *      }
         * }
         */

        public TelnetNegotiator(TerminalParam param, int width, int height)
        {
            _param             = param;
            _refusedOptions    = new ArrayList();
            _width             = width;
            _height            = height;
            _warnings          = new ArrayList();
            _state             = TelnetCode.NA;
            _sequenceBuffer    = new MemoryStream();
            _optionWriter      = new TelnetOptionWriter();
            _defaultOptionSent = false;
        }
        public void Load(ConfigNode parent)
        {
            ConfigNode node = parent.FindChildConfigNode("connection-history");

            if (node != null)
            {
                foreach (ConfigNode ch in node.Children)
                {
                    _history.Add(TerminalParam.CreateFromConfigNode(ch));
                }
            }
        }
Beispiel #8
0
        private static ITerminalSettings CreateTerminalSettings(TerminalParam param)
        {
            ITerminalSettings ts = MacroPlugin.Instance.TerminalEmulatorService.CreateDefaultTerminalSettings(param.Caption, null);

            ts.BeginUpdate();
            ts.RenderProfile = param.RenderProfile;
            ts.TransmitNL    = param.TransmitNL;
            ts.LocalEcho     = param.LocalEcho;
            ts.Encoding      = param.Encoding;
            if (param.LogType != LogType.None)
            {
                ts.LogSettings.Reset(CreateSimpleLogSettings(param));
            }
            ts.EndUpdate();
            return(ts);
        }
        public void ReplaceIdenticalParam(TerminalParam newparam_)
        {
            int           n        = 0;
            TerminalParam newparam = (TerminalParam)newparam_.Clone();

            newparam.LogPath = "";
            newparam.LogType = LogType.None;
            foreach (TerminalParam p in _history)
            {
                if (p.Equals(newparam))
                {
                    _history[n] = newparam;
                    return;
                }
                n++;
            }
        }
        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 CommandResult OpenShortCut(string filename)
 {
     try {
         if (GApp.Frame.WindowState == FormWindowState.Minimized)
         {
             GApp.Frame.WindowState = FormWindowState.Normal;
         }
         ConfigNode    cn    = DOMNodeConverter.Read(XMLUtil.FileToDOM(filename).DocumentElement);
         TerminalParam param = TerminalParam.CreateFromConfigNode(cn);
         param.FeedLogOption();
         NewConnection(param);
         return(CommandResult.Success);
     }
     catch (Exception ex) {
         GUtil.Warning(_frame, ex.Message);
         return(CommandResult.Failed);
     }
 }
        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);
        }
 public static ConnectionTag CreateNewConnection(TerminalParam param)
 {
     if (param is SerialTerminalParam)
     {
         return(CreateNewSerialConnection(GEnv.Frame, (SerialTerminalParam)param));
     }
     else if (param is LocalShellTerminalParam)
     {
         return(CreateNewLocalShellConnection(GEnv.Frame, (LocalShellTerminalParam)param));
     }
     else
     {
         SilentClient      s   = new SilentClient();
         SocketWithTimeout swt = StartNewConnection(s, (TCPTerminalParam)param, null, null);
         if (swt == null)
         {
             return(null);
         }
         else
         {
             return(s.Wait(swt));
         }
     }
 }
        private string ReturnAccount(TerminalParam p)
        {
            SSHTerminalParam pp = p as SSHTerminalParam;

            return(pp == null? null : pp.Account);
        }
Beispiel #15
0
        public static ITerminalSession InvokeOpenSessionOrNull(ICommandTarget target, TerminalParam param)
        {
            ITerminalParameter tp = param.ConvertToTerminalParameter();
            ITerminalSettings  ts = CreateTerminalSettings(param);

            IViewManager pm = CommandTargetUtil.AsWindow(target).ViewManager;
            //独立ウィンドウにポップアップさせるようなことは考えていない
            IContentReplaceableView rv = (IContentReplaceableView)pm.GetCandidateViewForNewDocument().GetAdapter(typeof(IContentReplaceableView));
            TerminalControl         tc = (TerminalControl)rv.GetCurrentContent().GetAdapter(typeof(TerminalControl));

            if (tc != null)   //ターミナルコントロールがないときは無理に設定しにいかない
            {
                RenderProfile rp = ts.UsingDefaultRenderProfile ? MacroPlugin.Instance.TerminalEmulatorService.TerminalEmulatorOptions.CreateRenderProfile() : ts.RenderProfile;
                Size          sz = tc.CalcTerminalSize(rp);
                tp.SetTerminalSize(sz.Width, sz.Height);
            }


            return((ITerminalSession)MacroPlugin.Instance.WindowManager.ActiveWindow.AsForm().Invoke(new OpenSessionDelegate(OpenSessionOrNull), tp, ts));
        }
Beispiel #16
0
 /// <summary>
 /// 
 /// 0x0041 STRING 复位电话号码,可采用此电话号码拨打终端电话让终端复位
 ///    0x0042 STRING
 ///    恢复出厂设置电话号码,可采用此电话号码拨打终端电话让终端恢复
 ///    出厂设置
 /// </summary>
 private byte[] SetControl(byte[] tel)
 {
     var p = new TerminalParam(0x0041, (byte)tel.Length, tel);
     var p2 = new TerminalParam(0x0042, (byte)tel.Length, tel);
     var list=new List<TerminalParam>();
     list.Add(p);
     list.Add(p2);
     return this.SetParamMessageByList(list);
 }
        /// <summary>
        /// Wires up a PowerShell runspace created via <see cref="RunspaceFactory.CreateRunspace()"/> to the terminal to display the PowerShell to the user.
        /// </summary>
        public override void Connect()
        {
            GEnv.Options.Font = Connection.Font;

            _progressBar.Value  = 0;
            _progressLabel.Text = "";

            // This is not strictly a network connection:  we're relaying information that we receive from the runspace to the terminal over a local stream
            // (a StreamConnection in this case)
            TerminalParam terminalParam = TCPTerminalParam.Fake;

            terminalParam.TerminalType  = TerminalType.XTerm;
            terminalParam.RenderProfile = new RenderProfile();
            terminalParam.Encoding      = EncodingType.UTF8;

            StreamConnection connection = new StreamConnection(terminalParam)
            {
                Capture = false
            };

            ConnectionTag connectionTag = new ConnectionTag(connection);

            connectionTag.Receiver.Listen();

            // Attach the new "connection" to the terminal control
            _terminal.TerminalPane.FakeVisible = true;
            _terminal.TerminalPane.Attach(connectionTag);
            _terminal.TerminalPane.Focus();
            _terminal.TerminalPane.SendShiftTab = true;
            _terminal.SetPaneColors(Connection.TextColor, Connection.BackgroundColor);

            try
            {
                _powerShellHost = new PowerShellHost(this, _terminal, ExecuteQuiet, _progressBar, _progressLabel);

                // Create the host and runspace instances for this interpreter.  If we're connecting to the local host, don't bother with the connection info.
                // ReSharper disable StringCompareIsCultureSpecific.3
                if (String.Compare(Connection.Host, "localhost", true) != 0 && Connection.Host != "127.0.0.1" &&
                    String.Compare(Connection.Host, Environment.MachineName, true) != 0)
                // ReSharper restore StringCompareIsCultureSpecific.3
                {
                    WSManConnectionInfo connectionInfo = new WSManConnectionInfo
                    {
                        ComputerName = Connection.Host
                    };

                    if (!String.IsNullOrEmpty(Connection.InheritedUsername))
                    {
                        connectionInfo.Credential = new PSCredential(Connection.InheritedUsername, Connection.InheritedPassword);
                    }

                    Runspace = RunspaceFactory.CreateRunspace(_powerShellHost, connectionInfo);
                }

                else
                {
                    Runspace = RunspaceFactory.CreateRunspace(_powerShellHost);
                }

                Runspace.Open();
            }

            catch (Exception e)
            {
                OnConnectionLost(this, new ErrorEventArgs(e));
                return;
            }

            // Start capturing input from the prompt via the input loop
            _inputThread = new Thread(InputLoop)
            {
                Name = "PowerShellConnectionForm Input Thread"
            };
            _inputThread.Start();

            ParentForm.Closing += ParentForm_Closing;

            OnConnected(this, null);
        }
        private void ImportConnectionSettings(Hashtable values)
        {
            ConfigNode cn = ConfigNode.CreateIndirect("", values);

            GApp.ConnectionHistory.Append(TerminalParam.CreateFromConfigNode(cn));
        }
Beispiel #19
0
        /// <summary>
        /// 0x002C DWORD 缺省距离汇报间隔,单位为米(m),>0
        /// 定距回传
        ///   0x002E DWORD 休眠时汇报距离间隔,单位为米(m),>0
        /// </summary>
        /// <param name="distance">距离 单位米</param>
        /// <returns></returns>
        public override byte[] SetTrack(int distance)
        {
            uint dis = Convert.ToUInt32(distance);
            var bytes = BitConverter.GetBytes(Endian.SwapUInt32(dis));//高位在前

            var p = new TerminalParam(0x002C, (byte)bytes.Length, bytes);
            var p1 = new TerminalParam(0x002E, (byte)bytes.Length, bytes);
            var list = new List<TerminalParam>();
            list.Add(p);
            list.Add(p1);

            return this.SetParamMessageByList(list);
        }
Beispiel #20
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="parameters">Parameters describing the terminal.</param>
 public StreamConnection(TerminalParam parameters)
     : base(parameters, 80, 25)
 {
     Capture = true;
 }
Beispiel #21
0
 private byte[] SetParam(uint key, byte[] value)
 {
     var p = new TerminalParam(key, Convert.ToByte(value.Length), value);
     var list=new List<TerminalParam>();
     list.Add(p);
     return this.SetParam(list);
 }
        private int    ReturnPort(TerminalParam p)
        {
            TCPTerminalParam pp = p as TCPTerminalParam;

            return(pp == null? -1 : pp.Port);
        }
        private string ReturnHost(TerminalParam p)
        {
            TCPTerminalParam pp = p as TCPTerminalParam;

            return(pp == null? null : pp.Host);
        }
 private string ReturnLogPath(TerminalParam p)
 {
     return(p.LogPath);
 }
 public void Append(TerminalParam tp)
 {
     _history.Add(tp);
 }
Beispiel #26
0
        public override PConnection Open(TerminalParam param)
        {
            ITerminalSession ts = MacroUtil.InvokeOpenSessionOrNull(MacroPlugin.Instance.WindowManager.ActiveWindow, param);

            return(ts == null ? null : new ConnectionImpl(ts));
        }
Beispiel #27
0
        public override PConnection Open(TerminalParam param)
        {
            ConnectionTag con = GApp.InterThreadUIService.OpenConnection(param);

            return(con == null? null : new ConnectionImpl(con));
        }
Beispiel #28
0
 /// <summary>
 /// <ja>新しい接続を開きます。</ja>
 /// <en>Opens a new connection.</en>
 /// </summary>
 /// <remarks>
 /// <ja>失敗したときはメッセージボックスで通知をした上でnullが返ります。</ja>
 /// <en>If the connection fails, Poderosa shows an error message box and returns null to the macro.</en>
 /// </remarks>
 /// <seealso cref="TerminalParam"/>
 /// <seealso cref="TCPTerminalParam"/>
 /// <seealso cref="TelnetTerminalParam"/>
 /// <!--
 /// <seealso cref="SerialTerminalParam"/>
 /// -->
 /// <seealso cref="SSHTerminalParam"/>
 /// <param name="param"><ja>接続に必要なパラメータを収録した<see cref="TerminalParam"/>オブジェクト</ja><en>The <see cref="TerminalParam"/> object that contains parameters for the connection.</en></param>
 /// <returns><ja>新しく開かれた<see cref="Connection"/>オブジェクト</ja><en>A <see cref="Connection"/> object that describes the new connection.</en></returns>
 public abstract Connection Open(TerminalParam param);
Beispiel #29
0
 //设置IP
 /// <summary>
 /// 0x0018 DWORD 服务器TCP 端口
 /// 0x0013 STRING 主服务器地址,IP 或域名
 /// </summary>
 /// <param name="apn"></param>
 /// <param name="type"></param>
 /// <param name="ips"></param>
 /// <param name="port"></param>
 /// <param name="span"></param>
 /// <returns></returns>
 public override byte[] SetNetConfigure(APNType apn, IpType type, byte[] ips, int port, int span)
 {
     uint ipId = 0x0018;
     uint portId = 0x0042;
     if (IpType.Udp == type)
     {
         portId = 0x0019;
     }
     string ip = string.Format("{0}.{1}.{2}.{3}", ips[0], ips[1], ips[2], ips[3]);
     var ipBytes = Bit.StringToBytes(ip);
     uint nport = Convert.ToUInt32(port);
     var portBytes = BitConverter.GetBytes(Endian.SwapUInt32(nport));
     var p = new TerminalParam(ipId, (byte)ipBytes.Length, ipBytes);
     var p2 = new TerminalParam(portId, (byte)portBytes.Length, portBytes);
     var list = new List<TerminalParam>();
     list.Add(p);
     list.Add(p2);
     return this.SetParamMessageByList(list);
 }