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); }
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); }
public XmlLogger(StreamWriter w, TerminalParam p) { _writer = new XmlTextWriter(w); _writer.WriteStartDocument(); _writer.WriteStartElement("terminal-log"); //接続時のアトリビュートを書き込む _writer.WriteAttributeString("time", DateTime.Now.ToString()); }
/* * 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)); } } }
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); }
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)); }
/// <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)); }
/// <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); }
/// <summary> /// Default constructor. /// </summary> /// <param name="parameters">Parameters describing the terminal.</param> public StreamConnection(TerminalParam parameters) : base(parameters, 80, 25) { Capture = true; }
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); }
public override PConnection Open(TerminalParam param) { ITerminalSession ts = MacroUtil.InvokeOpenSessionOrNull(MacroPlugin.Instance.WindowManager.ActiveWindow, param); return(ts == null ? null : new ConnectionImpl(ts)); }
public override PConnection Open(TerminalParam param) { ConnectionTag con = GApp.InterThreadUIService.OpenConnection(param); return(con == null? null : new ConnectionImpl(con)); }
/// <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);
//设置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); }