Beispiel #1
0
        /// <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;
                    }
                }
            }
        }
Beispiel #2
0
        /// <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);
                }
            }
        }
Beispiel #3
0
        /// <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);
                }
            }
        }
Beispiel #4
0
        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);
                }
            }
        }
Beispiel #5
0
        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;
        }
Beispiel #6
0
        /// <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();
        }
Beispiel #7
0
        /// <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);
                    }
                }
            }
        }