コード例 #1
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
 private void ToolStripMenuItemGetHostPassword_Click(object sender, EventArgs e)
 {
     if (this.listViewHosts.SelectedItems.Count > 0)
     {
         LCTreeNodeHost h = (LCTreeNodeHost)this.listViewHosts.SelectedItems[0].Tag;
         if (h.Password.Length > 0)
         {
             //Пустой текст в этот метод передать нельзя, поэтому пока сделано так.
             //Надо позже сделать некативным пункт меню "Копировать ШК" если ШК пустой
             Clipboard.SetText(h.Password);
         }
     }
 }
コード例 #2
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
        private void ListViewHosts_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.listViewHosts.SelectedItems.Count > 0)
            {
                LCTreeNodeHost lcHost     = (LCTreeNodeHost)this.listViewHosts.SelectedItems[0].Tag;
                LCTypeHost     lcTypeHost = lcHost.TypeHost;
                // Выделяем узел в дереве.
                this.treeViewObject.SelectedNode = lcHost;
                switch (lcTypeHost)
                {
                case LCTypeHost.ETCO:
                {
                    this.toolStripComputers.Hide();
                    this.toolStripETCO.Show();
                    this.toolStripMFU.Hide();
                    this.toolStripSPD.Hide();
                }
                break;

                case LCTypeHost.HOST:
                {
                    this.toolStripComputers.Show();
                    this.toolStripETCO.Hide();
                    this.toolStripMFU.Hide();
                    this.toolStripSPD.Hide();
                }
                break;

                case LCTypeHost.MFU:
                {
                    this.toolStripComputers.Hide();
                    this.toolStripETCO.Hide();
                    this.toolStripMFU.Show();
                    this.toolStripSPD.Hide();
                }
                break;

                case LCTypeHost.SPD:
                {
                    this.toolStripComputers.Hide();
                    this.toolStripETCO.Hide();
                    this.toolStripMFU.Hide();
                    this.toolStripSPD.Show();
                }
                break;
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// Поиск хоста по ip адресу
 /// </summary>
 /// <param name="ip">IP адрес.</param>
 /// <returns>Возвращает найденный хост</returns>
 public LCTreeNodeHost FindHost(string ip)
 {
     foreach (LCTreeNode node in AllLCTreeNode(treeView.Nodes))
     {
         if (node.LCObjectType == LCObjectType.Host)
         {
             LCTreeNodeHost lcHost = (LCTreeNodeHost)node;
             if (lcHost.IP == ip)
             {
                 this.WriteListBox("Найдена хост с ip : " + lcHost.IP + ".");
                 return(lcHost);
             }
         }
     }
     return(null);
 }
コード例 #4
0
        /// <summary>
        /// Метод добавления хоста к данной группе
        /// </summary>
        /// <param name="nameHost">Имя хоста</param>
        /// <param name="ip">IP-адрес хоста</param>
        /// <param name="description">Описание хоста</param>
        /// <returns>Возвращает созданный хост</returns>
        public LCTreeNodeHost AddHost(string nameHost, string ip, string description)
        {
            // создаем новый узел Host
            LCTreeNodeHost lcTreeNodeHost = new LCTreeNodeHost
            {
                Text             = nameHost,
                IP               = ip,
                Barcode          = "",
                Login            = "",
                Password         = "",
                Description      = description,
                ContextMenuStrip = LCTreeNode.computerContextMenuStrip,
                ImageIndex       = 3
            };

            this.Nodes.Add(lcTreeNodeHost);
            lcTreeNodeHost.UpdateLC();
            this.WriteListBoxOperation("Добавлен компьтер : " + nameHost);
            return(lcTreeNodeHost);
        }
コード例 #5
0
        /// <summary>
        /// Метод выполянющий команду для которой предназначенна данная кнопка
        /// </summary>
        public void Execute()
        {
            string ip;

            try
            {
                LCTreeNodeHost lcTreeNodeHost = (LCTreeNodeHost)listItems.SelectedItems[0].Tag;
                ip = lcTreeNodeHost.IP;
                //ip = listItems.SelectedItems[0].SubItems[0].Text;
            }
            catch (System.ArgumentOutOfRangeException e)
            {
                this.WriteListBox(e.Message);
                this.WriteListBox("Не выделен компьютер для подключения !");
                return;
            }

            string execStr = this.parameters;

            execStr = execStr.Replace("@[IP]", ip);
            execStr = execStr.Replace("@[User]", FormMain.User);
            string displayStr = execStr;

            execStr    = execStr.Replace("@[Password]", FormMain.Password);
            displayStr = displayStr.Replace("@[Password]", "********");
            this.WriteListBox(" Выполняем: " + this.command + " " + displayStr);
            try
            {
                System.Diagnostics.Process.Start(this.command, execStr);
            }
            catch (System.ComponentModel.Win32Exception e)
            {
                this.WriteListBox(e.Message);
            }
            catch (InvalidOperationException e)
            {
                this.WriteListBox(e.Message);
            }
        }
コード例 #6
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
        /// <summary>
        /// Метод переопределения сети для хостов из группы "Не в списке"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolStripMenuItemFindSubnet_Click(object sender, EventArgs e)
        {
            List <String> list = new List <String>();
            TreeNode      node = this.lCDirectory.ReturnGroupNoList();

            foreach (TreeNode tn in node.Nodes)
            {
                LCTreeNodeHost lc = (LCTreeNodeHost)tn;
                list.Add(lc.IP);
                if (lc.Tag != null)
                {
                    ((ListViewItem)lc.Tag).Remove();
                }
            }
            // Удаляем группу "Не в списке"
            node.Remove();
            // проверяем на всякий пожарный, не пустое ли дерево справочника
            if (this.treeViewObject.Nodes.Count > 0)
            {
                this.treeViewObject.BeginUpdate();
                foreach (string st in list)
                {
                    // Ищем принадлежность ПК к какой либо сети
                    LCTreeNodeSubnet lcSubnet = this.lCDirectory.FindSubnetIP(st);
                    if (lcSubnet != null)
                    {
                        // и сразу же выделяем этот объект
                        this.OpenLCTreeNode(lcSubnet.AddHost(st, st, ""));
                    }
                    else
                    {
                        LCTreeNodeNoList lcNoList = lCDirectory.ReturnGroupNoList();
                        // и сразу же выделяем этот объект
                        this.OpenLCTreeNode(lcNoList.AddHost(st, st, ""));
                    }
                }
                this.treeViewObject.EndUpdate();
            }
        }
コード例 #7
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
 private void FindAndOpenHost(string st)
 {
     if (this.lCDirectory.CorrectIP(ref st))
     {
         this.toolStripTextBoxIP.Text = st;
         this.WriteListBox("Поиск компьютера с IP " + this.toolStripTextBoxIP.Text + " запущен.");
         LCTreeNodeHost lcHost = this.lCDirectory.FindHost(st);
         if (lcHost != null)
         {
             //Выделяем найденый хост в дереве
             LCDirectory.treeView.SelectedNode = lcHost;
             this.OpenLCTreeNode(lcHost);
             this.WriteListBox("Найден хост с именем: " + lcHost.Text + ".");
         }
         else
         {
             //Определяем принадлежность хоста сети
             LCTreeNodeSubnet findSubnet = this.lCDirectory.FindSubnetIP(st);
             if (findSubnet != null)
             {
                 this.OpenLCTreeNode(findSubnet.AddHost(st, st, ""));
                 this.WriteListBox("IP адрес " + st + " принадлежит сети " + findSubnet.Text);
             }
             else
             {
                 LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)this.lCDirectory.ReturnGroupNoList();
                 //добавляем хост и сразу же выделяем этот объект
                 this.OpenLCTreeNode(lcNoList.AddHost(st, st, ""));
                 this.WriteListBox("IP адрес " + st + " добавлен в группу " + lcNoList.Text);
             }
         }
     }
     else
     {
         this.WriteListBox("Введенное значение не является IP адресом");
     }
 }
コード例 #8
0
        private XElement SaveChildren(LCTreeNode item, XElement current)
        {
            LCTreeNode xnodWorking;

            switch (item.LCObjectType)
            {
            case LCObjectType.Group:
            {
                if (item.Name != "Root")
                {
                    LCTreeNodeGroup lcGroup  = (LCTreeNodeGroup)item;
                    XElement        xElement = new XElement("Group",
                                                            new XAttribute("NameGroup", lcGroup.Text),
                                                            new XAttribute("Description", lcGroup.Description));
                    current = xElement;
                }
            }
            break;

            case LCObjectType.Host:
            {
                LCTreeNodeHost lcHost   = (LCTreeNodeHost)item;
                XElement       xElement = new XElement("Host",
                                                       new XAttribute("TypeHost", lcHost.TypeHost.ToString()),
                                                       new XAttribute("NameHost", lcHost.Text),
                                                       new XAttribute("IP", lcHost.IP),
                                                       new XAttribute("Barcode", lcHost.Barcode),
                                                       new XAttribute("Login", lcHost.Login),
                                                       new XAttribute("Password", lcHost.Password),
                                                       new XAttribute("Description", lcHost.Description));;
                current = xElement;
            }
            break;

            case LCObjectType.NoList:
            {
                LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)item;
                XElement         xElement = new XElement("NoList",
                                                         new XAttribute("NameGroup", lcNoList.Text),
                                                         new XAttribute("Description", lcNoList.Description));
                current = xElement;
            }
            break;

            case LCObjectType.SubNet:
            {
                LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)item;
                XElement         xElement = new XElement("Subnet",
                                                         new XAttribute("NameSubnet", lcSubnet.Text),
                                                         new XAttribute("IPSubnet", lcSubnet.IPSubnet),
                                                         new XAttribute("MaskSubnet", lcSubnet.MaskSubnet),
                                                         new XAttribute("Description", lcSubnet.Description));
                current = xElement;
            }
            break;
            }
            //рекурсивный перебор всех дочерних узлов
            if (item.Nodes.Count > 0)
            {
                xnodWorking = (LCTreeNode)item.FirstNode;
                while (xnodWorking != null)
                {
                    current.Add(SaveChildren(xnodWorking, current));
                    xnodWorking = (LCTreeNode)xnodWorking.NextNode;
                }
            }
            return(current);
        }
コード例 #9
0
        /// <summary>
        /// Метод добавления дочерних узлов в дерево
        /// </summary>
        /// <param name="xnod">XML элемент</param>
        /// <param name="newNode">Компонент TreeNode в котором создаются узлы</param>
        private void AddChildrenDOMXML(XElement xnod, TreeNode newNode)
        {
            if (xnod.NodeType == System.Xml.XmlNodeType.Element)
            {
                switch (xnod.Name.ToString())
                {
                case "Group":
                {
                    LCTreeNodeGroup lcTreeNodeGroup = new LCTreeNodeGroup
                    {
                        Text             = xnod.Attribute("NameGroup").Value,
                        Description      = xnod.Attribute("Description").Value,
                        ContextMenuStrip = LCTreeNode.groupContextMemuStrip,
                        ImageIndex       = 2
                    };
                    newNode.Nodes.Add(lcTreeNodeGroup);
                    lcTreeNodeGroup.UpdateLC();
                    newNode = lcTreeNodeGroup;
                }
                break;

                case "NoList":
                {
                    LCTreeNodeNoList lcTreeNodeNoList = new LCTreeNodeNoList
                    {
                        Text             = xnod.Attribute("NameGroup").Value,
                        Description      = xnod.Attribute("Description").Value,
                        ContextMenuStrip = LCTreeNode.noListContextMenuStrip,
                        ImageIndex       = 2
                    };
                    lcTreeNodeNoList.ToolTipText += lcTreeNodeNoList.Text;
                    lcTreeNodeNoList.ToolTipText += "\n" + lcTreeNodeNoList.Description;
                    newNode.Nodes.Add(lcTreeNodeNoList);
                    newNode = lcTreeNodeNoList;
                }
                break;

                case "Host":
                {
                    LCTreeNodeHost lcTreeNodeHost = new LCTreeNodeHost
                    {
                        Text             = xnod.Attribute("NameHost").Value,
                        IP               = xnod.Attribute("IP").Value,
                        Barcode          = xnod.Attribute("Barcode").Value,
                        Login            = xnod.Attribute("Login").Value,
                        Password         = xnod.Attribute("Password").Value,
                        Description      = xnod.Attribute("Description").Value,
                        TypeHost         = (LCTypeHost)Enum.Parse(typeof(LCTypeHost), xnod.Attribute("TypeHost").Value),
                        ContextMenuStrip = LCTreeNode.computerContextMenuStrip
                    };
                    newNode.Nodes.Add(lcTreeNodeHost);
                    lcTreeNodeHost.UpdateLC();
                    return;
                }

                case "Subnet":
                {
                    LCTreeNodeSubnet lcTreeNodeSubnet = new LCTreeNodeSubnet
                    {
                        Text             = xnod.Attribute("NameSubnet").Value,
                        IPSubnet         = xnod.Attribute("IPSubnet").Value,
                        MaskSubnet       = xnod.Attribute("MaskSubnet").Value,
                        Description      = xnod.Attribute("Description").Value,
                        ContextMenuStrip = LCTreeNode.subnetContextMenuStrip,
                        ImageIndex       = 5
                    };
                    newNode.Nodes.Add(lcTreeNodeSubnet);
                    lcTreeNodeSubnet.UpdateLC();
                    newNode = lcTreeNodeSubnet;
                }
                break;

                case "Root":
                {
                    //MessageBox.Show("yes");
                    //newNode.ImageIndex = 1;
                    //newNode.Text = mapAttributes.Item(1).Value;
                }
                break;
                }
                foreach (XElement element in xnod.Elements())
                {
                    AddChildrenDOMXML(element, newNode);
                }
            }
        }
コード例 #10
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
        /// <summary>
        /// Событие удаления объекта LC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteLCTreeNode(object sender, EventArgs e)
        {
            LCTreeNode lcTreeNode = (LCTreeNode)this.treeViewObject.SelectedNode;
            string     tempStr    = lcTreeNode.Text;

            // Проверяем есть ли у этого узла дочерние объекты
            if (lcTreeNode.Nodes.Count > 0)
            {
                // надо перебрать все узлы
                if (MessageBox.Show("Объект имеет дочерние узлы! Все равно удалить?", "Удаление", MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    // Здесь нужен код для удаления из таблиц объектов, которые являются дочерними по отношению к удаляемому объекту

                    // Удаляем текущий
                    //lcTreeNode.Remove();
                    MessageBox.Show("Пока не реализовано удаление элементов с дочерними объектами!");
                    // Сообщаем об удалении
                    this.WriteListBox("Группа " + tempStr + " и её дочерние объекты удалены.");
                }
            }
            else
            {
                if (MessageBox.Show("Вы дейстительно хотите удалить этот объект ?", "Удаление", MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    switch (lcTreeNode.LCObjectType)
                    {
                    case LCObjectType.Host:
                    {
                        LCTreeNodeHost lcHost = (LCTreeNodeHost)lcTreeNode;
                        lcHost.RemoveLC();
                        tempStr = "Компьютер: " + tempStr + " удалён.";
                        // Сообщаем об удалении
                        this.WriteListBox(tempStr);
                        break;
                    }

                    case LCObjectType.SubNet:
                    {
                        LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)lcTreeNode;
                        lcSubnet.RemoveLC();
                        tempStr = "Сеть: " + tempStr + " удалена.";
                        this.WriteListBox(tempStr);
                        break;
                    }

                    case LCObjectType.Group:
                    {
                        LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)lcTreeNode;
                        lcGroup.RemoveLC();
                        tempStr = "Группа: " + tempStr + " удалена.";
                        this.WriteListBox(tempStr);
                        break;
                    }

                    case LCObjectType.NoList:
                    {
                        LCTreeNodeNoList lcNoList = (LCTreeNodeNoList)lcTreeNode;
                        lcNoList.Remove();
                        tempStr = "Группа: " + tempStr + " удалена.";
                        this.WriteListBox(tempStr);
                        break;
                    }
                    }
                }
            }
        }
コード例 #11
0
ファイル: FormMain.cs プロジェクト: Mutexman/LC
        /// <summary>
        /// Метод открытия узла дерева.
        /// </summary>
        /// <param name="treeNode">Открываемый узел.</param>
        private void OpenLCTreeNode(TreeNode treeNode)
        {
            if (treeNode == null)
            {
                return;
            }

            LCTreeNode lcTreeNode = (LCTreeNode)treeNode;

            switch (lcTreeNode.LCObjectType)
            {
            case LCObjectType.Host:
            {
                this.tabControlObject.SelectedTab = this.tabPageHosts;
                LCTreeNodeHost lcHost = (LCTreeNodeHost)lcTreeNode;
                // Делаем активным список хостов
                this.listViewHosts.Focus();
                foreach (ListViewItem curilv in this.listViewHosts.Items)
                {
                    if (curilv.Tag == lcHost)
                    {
                        // Выделяем нужный элемент в списке
                        curilv.Selected = true;
                        return;
                    }
                }
                // определяем родительскую группу элемента
                LCTreeNode lcNode = (LCTreeNode)lcHost.Parent;
                // Пока сделано так, в будущем предполагаются что ПК состоят только в сетях. Кроме группы <Не в списке>
                if (lcNode.LCObjectType == LCObjectType.SubNet)
                {
                    ListViewGroup lvg = null;
                    foreach (ListViewGroup curGroup in this.listViewHosts.Groups)
                    {
                        if (curGroup.Tag == lcNode)
                        {
                            // Группа существует
                            lvg = curGroup;
                            break;
                        }
                    }
                    if (lvg == null)
                    {
                        // Такой группы еще нет, надо её создать
                        lvg = new ListViewGroup(lcNode.Text);
                    }
                    lvg.Tag = lcNode;
                    this.listViewHosts.Groups.Add(lvg);
                    ListViewItem lvi = new ListViewItem(new string[] { lcHost.TypeHost.ToString(), lcHost.IP, lcHost.Text, lcHost.ParentGroup, lcHost.DescriptionStr }, lvg)
                    {
                        Tag = lcHost
                    };
                    lcHost.Tag = lvi;
                    this.listViewHosts.Items.Add(lvi);
                    lcHost.UpdateLC();
                    lvi.Selected = true;
                }
                else
                {
                    ListViewItem lvi = new ListViewItem(new string[] { lcHost.TypeHost.ToString(), lcHost.IP, lcHost.Text, lcHost.ParentGroup, lcHost.DescriptionStr })
                    {
                        Tag = lcHost
                    };
                    lcHost.Tag = lvi;
                    this.listViewHosts.Items.Add(lvi);
                    lcHost.UpdateLC();
                    lvi.Selected = true;
                }
                break;
            }

            case LCObjectType.SubNet:
            {
                this.tabControlObject.SelectedTab = this.tabPageSubnets;
                this.listViewSubnets.Focus();
                LCTreeNodeSubnet lcSubnet = (LCTreeNodeSubnet)lcTreeNode;
                foreach (ListViewItem cutilv in this.listViewSubnets.Items)
                {
                    if (cutilv.Tag == lcSubnet)
                    {
                        cutilv.Selected = true;
                        return;
                    }
                }
                ListViewItem lvi = new ListViewItem(new string[] { lcSubnet.Text, lcSubnet.IPSubnet,
                                                                   lcSubnet.MaskSubnet, lcSubnet.ParentGroup, lcSubnet.DescriptionStr })
                {
                    Tag = lcSubnet
                };
                lcSubnet.Tag = lvi;
                this.listViewSubnets.Items.Add(lvi);
                lvi.Selected = true;
                break;
            }

            case LCObjectType.Group:
            {
                this.tabControlObject.SelectedTab = this.tabPageGroups;
                this.listViewGroups.Focus();
                LCTreeNodeGroup lcGroup = (LCTreeNodeGroup)lcTreeNode;
                foreach (ListViewItem curilv in this.listViewGroups.Items)
                {
                    if (curilv.Tag == lcGroup)
                    {
                        curilv.Selected = true;
                        return;
                    }
                }
                ListViewItem lvi = new ListViewItem(new string[] { lcGroup.Text, lcGroup.ParentGroup, lcGroup.DescriptionStr })
                {
                    Tag = lcGroup
                };
                lcGroup.Tag = lvi;
                this.listViewGroups.Items.Add(lvi);
                lvi.Selected = true;
                break;
            }
            }
        }