/// <summary> /// 全屏显示远程桌面 /// </summary> /// <param name="node"></param> private void ShowFullScreenRemoteDesktop(RDSDataNode node) { ChangeCurrentRDPanel(node); if (node.NodeType == RDSDataNodeType.Server) { var server = (RDSServer)node.RDSData; if (server.LinkType == "远程桌面") { AxMSTSCLib.AxMsRdpClient9NotSafeForScripting rdp = null; // 如果Panel中包含子控件,则让远程桌面控件启动连接 if (currentRDPanel.HasChildren) { rdp = (AxMSTSCLib.AxMsRdpClient9NotSafeForScripting)currentRDPanel.Controls[0]; rdp.FullScreenTitle = rdp.Server; rdp.FullScreen = true; } } } }
/// <summary> /// 连接远程终端 /// </summary> /// <param name="server"></param> /// <param name="connectedAction"></param> private void ConnectRemoteTerminal(RDSDataNode node) { ChangeCurrentRDPanel(node); var server = (RDSServer)node.RDSData; if (server.OpType == "Linux") { ConnectSSH(server); } else { if (server.LinkType == "SSH2") { ConnectSSH(server); } else { ConnectWindowsDesktop(server); } } }
/// <summary> /// 递归解密全部密码 /// </summary> /// <param name="dataManager"></param> /// <param name="parentNode"></param> private void DecryptPassword(RDSDataManager dataManager, RDSDataNode parentNode) { if (parentNode.Nodes == null && parentNode.Nodes.Count <= 0) { return; } // 恢复密码为明文 foreach (RDSDataNode node in parentNode.Nodes) { if (node.NodeType == RDSDataNodeType.Server) { var server = (RDSServer)node.RDSData; server.Password = EncryptUtils.DecryptServerPassword(server); dataManager.AddServer(server); } else { DecryptPassword(dataManager, node); } } }
private void serverTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { bool isDoConnect = false; var treeNode = e.Node; if (treeNode != null) { treeNode.Checked = true; var node = (RDSDataNode)treeNode; currentTreeNode = node; if (node.NodeType == RDSDataNodeType.Server) { isDoConnect = true; } if (isDoConnect) { ConnectRemoteTerminal(node); } } }
private void InitTreeView() { RDSDataManager dataManager = new RDSDataManager(); var doc = dataManager.GetData(); var root = doc.Root; RDSDataNode rootNode = new RDSDataNode(); rootNode.Text = "远程桌面"; rootNode.Tag = Guid.Empty; rootNode.NodeType = RDSDataNodeType.Group; rootNode.ContextMenuStrip = rightButtonMenu; rootNode.ImageIndex = 0; InitTreeNodes(root, rootNode); serverTree.Nodes.Add(rootNode); serverTree.ImageList = imageList1; rootNode.Expand(); currentTreeNode = rootNode; }
/// <summary> /// 更换当前Panel /// </summary> /// <param name="node"></param> private void ChangeCurrentRDPanel(RDSDataNode node) { // 移除当前Panel if (currentRDPanel != null) { this.splitContainer1.Panel2.Controls.Remove(currentRDPanel); } Panel rdPanel = null; var panelID = "panel_" + node.Tag.ToString(); // 如果Panel已经存在,直接加载Panel,否则创建新的Panel if (rdPanelDictionary.ContainsKey(panelID)) { rdPanel = rdPanelDictionary[panelID]; } if (rdPanel == null) { rdPanel = new Panel(); rdPanel.Dock = System.Windows.Forms.DockStyle.Fill; rdPanel.Location = new System.Drawing.Point(0, 0); rdPanel.Name = panelID; rdPanel.TabIndex = 0; rdPanel.GotFocus += RdPanel_GotFocus; } this.splitContainer1.Panel2.Controls.Add(rdPanel); if (!rdPanelDictionary.ContainsKey(rdPanel.Name)) { rdPanelDictionary.Add(rdPanel.Name, rdPanel); } currentRDPanel = rdPanel; currentRDPanel.Focus(); }
/// <summary> /// 移除节点 /// </summary> /// <param name="node"></param> private void RemoveServerTreeNode(RDSDataNode node, bool removePanel = true) { var nodeID = (Guid)node.Tag; if (nodeID != Guid.Empty) { // 数据中移除 RDSDataManager dataManager = new RDSDataManager(); dataManager.Remove(nodeID); // 树形菜单中移除 node.Remove(); // Panel移除 if (removePanel) { var panelID = "panel_" + nodeID; if (rdPanelDictionary.ContainsKey(panelID)) { rdPanelDictionary.Remove(panelID); } } } }