Example #1
0
        private void comboBoxFilterOptions_SelectedIndexChanged(object sender, EventArgs e)
        {
            isFiltering = true;
            string filter = comboBoxFilterOptions.SelectedItem.ToString();
            List<TreeNode> allTreeNodes = GetAllTreeNodes();
            #region 所有站点
            if (filter == "选择所有站点")
            {
                foreach (TreeNode treenode in allTreeNodes)
                {
                    treenode.Checked = true;
                }
            }
            #endregion
            #region 已启动站点
            else if (filter == "已启动站点")
            {
                using (ServerManager serverManager = new ServerManager())
                {
                    IEnumerable<TreeNode> allSiteNodes = treeHelper.GetAllSiteNodes(serverManager);
                    IEnumerable<TreeNode> startedSiteNodes = allSiteNodes.Where(n => ((Node)n.Tag).Site.State == ObjectState.Started);
                    TreeViewWebSite.Nodes.Clear();
                    TreeNode rootStartedSites = new TreeNode("已启动站点(" + startedSiteNodes.Count() + ")个");
                    rootStartedSites.ImageIndex = rootStartedSites.SelectedImageIndex = 9;
                    rootStartedSites.Tag = new Node { NodeType = NodeType.Root };
                    TreeViewWebSite.Nodes.Add(rootStartedSites);
                    rootStartedSites.Nodes.AddRange(startedSiteNodes.OrderBy(n => n.Text.Length).ToArray());
                }
            }
            else if (filter == "根据物理路径查找站点")
            {
                filterAddressTextBox.Visible = true;
                filterAddressConfirm.Visible = true;
            }
            #endregion
            #region 已停止站点
            else if (filter == "已停止站点")
            {
                using (ServerManager serverManager = new ServerManager())
                {
                    IEnumerable<TreeNode> allSiteNodes = treeHelper.GetAllSiteNodes(serverManager);
                    IEnumerable<TreeNode> stopedSiteNodes = allSiteNodes.Where(n => ((Node)n.Tag).Site.State == ObjectState.Stopped);
                    TreeViewWebSite.Nodes.Clear();
                    TreeNode rootStopedSites = new TreeNode("已停止站点(" + stopedSiteNodes.Count() + ")个");
                    rootStopedSites.ImageIndex = rootStopedSites.SelectedImageIndex = 9;
                    rootStopedSites.Tag = new Node { NodeType = NodeType.Root };
                    TreeViewWebSite.Nodes.Add(rootStopedSites);
                    rootStopedSites.Nodes.AddRange(stopedSiteNodes.OrderBy(n => n.Text.Length).ToArray());
                }
            }
            #endregion
            #region 未配置Http重定向的站点
            else if (filter == "未配置Http重定向的站点")
            {
                if ((MessageBox.Show("确定查找并勾选当前树形目录下所有未配置Http重定向的站点?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes))
                {
                    backgroundFilter.RunWorkerAsync();
                }
            }
            #endregion
            #region 绑定配置多于一条的网站
            else if (filter == "绑定配置多于一条的网站")
            {
                using (ServerManager serverManager = new ServerManager())
                {
                    IEnumerable<TreeNode> allSiteNodes = treeHelper.GetAllSiteNodes(serverManager);
                    IEnumerable<TreeNode> siteNodesWithMultiBindings = allSiteNodes.Where(n => ((Node)n.Tag).Site.Bindings.Count > 1);
                    TreeViewWebSite.Nodes.Clear();
                    TreeNode rootNodeMultiBindings = new TreeNode("绑定配置多于一条的网站(" + siteNodesWithMultiBindings.Count() + ")个");
                    rootNodeMultiBindings.ImageIndex = rootNodeMultiBindings.SelectedImageIndex = 9;
                    rootNodeMultiBindings.Tag = new Node { NodeType = NodeType.Root };
                    TreeViewWebSite.Nodes.Add(rootNodeMultiBindings);
                    rootNodeMultiBindings.Nodes.AddRange(siteNodesWithMultiBindings.OrderBy(n => n.Text.Length).ToArray());
                }
            }
            else if (filter == "绑定配置含有关联【非www站点】的【www站点】")
            {
                using (ServerManager serverManager = new ServerManager())
                {
                    try
                    {
                        IEnumerable<TreeNode> allSiteNodes = treeHelper.GetAllSiteNodes(serverManager);
                        IEnumerable<TreeNode> wwwSiteNodes = allSiteNodes.Where(n => n.Text.StartsWith("www", true, null));
                        IEnumerable<TreeNode> wwwSiteNodesWithWrongBindings = wwwSiteNodes.Where(n => ((Node)n.Tag).Site.Bindings.Where(b => b.Host == n.Text.Substring(4)).Count() > 0);
                        TreeNode[] stops1 = wwwSiteNodesWithWrongBindings.Where(n => ((Node)n.Tag).Site.State == ObjectState.Stopped).OrderBy(n => n.Text).ToArray();
                        TreeNode[] started1 = wwwSiteNodesWithWrongBindings.Where(n => ((Node)n.Tag).Site.State == ObjectState.Started).OrderBy(n => n.Text).ToArray();

                        IEnumerable<TreeNode> siteWithoutWWW = allSiteNodes.Where(n => n.Text.StartsWith("www.", true, null) == false && string.IsNullOrEmpty(n.Text) == false);
                        UrlEqualityComparer comparer = new UrlEqualityComparer();
                        IEnumerable<TreeNode> intersectionResult = siteWithoutWWW.Intersect(wwwSiteNodesWithWrongBindings, comparer);
                        TreeNode[] stops2 = intersectionResult.Where(n => ((Node)n.Tag).Site.State == ObjectState.Stopped).OrderBy(n => n.Text).ToArray();
                        TreeNode[] started2 = intersectionResult.Where(n => ((Node)n.Tag).Site.State == ObjectState.Started).OrderBy(n => n.Text).ToArray();

                        TreeViewWebSite.Nodes.Clear();

                        TreeNode subrootStart1 = new TreeNode("已启动");
                        TreeNode subrootStop1 = new TreeNode("已停止");
                        TreeNode subrootStart2 = new TreeNode("已启动");
                        TreeNode subrootStop2 = new TreeNode("已停止");
                        subrootStart1.Tag = new Node { NodeType = NodeType.Root };
                        subrootStop1.Tag = new Node { NodeType = NodeType.Root };
                        subrootStart2.Tag = new Node { NodeType = NodeType.Root };
                        subrootStop2.Tag = new Node { NodeType = NodeType.Root };

                        subrootStart1.Nodes.AddRange(started1);
                        subrootStop1.Nodes.AddRange(stops1);
                        subrootStart2.Nodes.AddRange(started2);
                        subrootStop2.Nodes.AddRange(stops2);

                        TreeNode rootNodeMultiBindings = new TreeNode("绑定配置含有关联【非www站点】的【www站点】(" + wwwSiteNodesWithWrongBindings.Count() + "个)");
                        rootNodeMultiBindings.ImageIndex = rootNodeMultiBindings.SelectedImageIndex = 9;
                        rootNodeMultiBindings.Tag = new Node { NodeType = NodeType.Root };
                        rootNodeMultiBindings.Nodes.Add(subrootStart1);
                        rootNodeMultiBindings.Nodes.Add(subrootStop1);
                        TreeViewWebSite.Nodes.Add(rootNodeMultiBindings);

                        TreeNode rootNoWWW = new TreeNode("对应已关联非www网站(" + intersectionResult.Count() + "个)");
                        rootNoWWW.Tag = new Node { NodeType = NodeType.Root };
                        rootNoWWW.Nodes.Add(subrootStart2);
                        rootNoWWW.Nodes.Add(subrootStop2);
                        rootNoWWW.ImageIndex = rootNoWWW.SelectedImageIndex = 9;
                        TreeViewWebSite.Nodes.Add(rootNoWWW);
                    }
                    catch (Exception exception)
                    {
                        listBoxLogs.Items.Add(string.Format("获取数据失败,错误详情{0}", exception));
                    }
                }
            }
            #endregion
            #region 关联网站(如a.com和www.a.com)
            else if (filter == "关联网站(如a.com和www.a.com)")
            {
                GetAssociatedSites();
            }
            #endregion

            isFiltering = false;
        }
Example #2
0
        private void GetAssociatedSites()
        {
            List<TreeNode> allTreeNodes = GetAllTreeNodes();
            using (ServerManager serverManager = new ServerManager())
            {
                IEnumerable<TreeNode> allNodes = treeHelper.GetAllNodes(serverManager);
                IEnumerable<TreeNode> siteWithoutWWW = allNodes.Where(n => n.Text.StartsWith("www.", true, null) == false && string.IsNullOrEmpty(n.Text) == false);
                IEnumerable<TreeNode> siteWithWWW = allNodes.Where(n => n.Text.StartsWith("www.", true, null));

                UrlEqualityComparer comparer = new UrlEqualityComparer();

                IEnumerable<TreeNode> intersectionResult = siteWithoutWWW.Intersect(siteWithWWW, comparer);

                List<TreeNode> intersectionResult2 = new List<TreeNode>();

                foreach (TreeNode treenode in intersectionResult)
                {
                    intersectionResult2.Add(siteWithWWW.Where(n => n.Text == "www." + treenode.Text || n.Text == "WWW." + treenode.Text).FirstOrDefault());
                }

                IEnumerable<TreeNode> result3 = siteWithWWW.Except(intersectionResult2);
                IEnumerable<TreeNode> result4 = siteWithoutWWW.Except(intersectionResult);

                TreeViewWebSite.Nodes.Clear();
                rootAssociatedSite.Nodes.Clear();

                rootAssociatedSite.Tag = new Node { NodeType = NodeType.Root };
                rootAssociatedSite.ImageIndex = rootAssociatedSite.SelectedImageIndex = 9;

                TreeNode rootNoWWW = new TreeNode("已关联非www网站(" + intersectionResult.Count() + "个)");
                rootNoWWW.Tag = new Node { NodeType = NodeType.Root };
                rootNoWWW.ImageIndex = rootNoWWW.SelectedImageIndex = 9;

                TreeNode rootWWW = new TreeNode("已关联www网站(" + intersectionResult2.Count + "个)");
                rootWWW.Tag = new Node { NodeType = NodeType.Root };
                rootWWW.ImageIndex = rootWWW.SelectedImageIndex = 9;

                TreeNode rootNoWWWNotAssociated = new TreeNode("未关联非www网站(" + result4.Count() + "个)");
                rootNoWWWNotAssociated.Tag = new Node { NodeType = NodeType.Root };
                rootNoWWWNotAssociated.ImageIndex = rootNoWWWNotAssociated.SelectedImageIndex = 9;

                TreeNode rootWWWNotAssociated = new TreeNode("未关联www网站(" + result3.Count() + "个)");
                rootWWWNotAssociated.Tag = new Node { NodeType = NodeType.Root };
                rootWWWNotAssociated.ImageIndex = rootWWWNotAssociated.SelectedImageIndex = 9;

                TreeViewWebSite.Nodes.Add(rootAssociatedSite);

                rootAssociatedSite.Nodes.Add(rootNoWWW);
                rootAssociatedSite.Nodes.Add(rootWWW);
                rootAssociatedSite.Nodes.Add(rootNoWWWNotAssociated);
                rootAssociatedSite.Nodes.Add(rootWWWNotAssociated);

                rootNoWWW.Nodes.AddRange(intersectionResult.OrderBy(n => n.Text.Length).ToArray());
                rootWWW.Nodes.AddRange(intersectionResult2.OrderBy(n => n.Text.Length).ToArray());
                rootWWWNotAssociated.Nodes.AddRange(result3.OrderBy(n => n.Text.Length).ToArray());
                rootNoWWWNotAssociated.Nodes.AddRange(result4.OrderBy(n => n.Text.Length).ToArray());
            }
        }