示例#1
0
 public IEnumerable <Topology> Collect()
 {
     using (var iisManager = new ServerManager())
     {
         return(iisManager.Sites
                .Select(site =>
         {
             try
             {
                 return new Topology
                 {
                     Node = CreateNodeFromSite(site),
                     Links = site.Applications
                             .Select(pool => new Link
                     {
                         From = _appPoolNodeRefCreator.CreateNodeRefFromObj(pool),
                         To = _siteNodeRefCreator.CreateNodeRefFromObj(site),
                         LinkType = LinkType.Hierarchy
                     })
                             .ToArray()
                 };
             }
             catch (Exception e)
             {
                 //_logger.WriteWarning(e.ToString());
                 return null;
             }
         })
                .Where(t => t != null)
                .ToArray());
     }
 }
        IEnumerable <Topology> ITopologyCollector.Collect()
        {
            using (var iisManager = new ServerManager())
            {
                X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
                store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
                var certificates = store.Certificates
                                   .Cast <X509Certificate2>()
                                   .ToDictionary(c => c.GetCertHashString().ToUpperInvariant());

                foreach (var site in iisManager.Sites)
                {
                    var hashes = site.Bindings
                                 .Where(b => b.Protocol.Equals("https"))
                                 .Select(b => b.CertificateHash.ToHex());
                    foreach (var hash in hashes)
                    {
                        X509Certificate2 cert;
                        if (!certificates.TryGetValue(hash, out cert))
                        {
                            continue;
                        }
                        yield return(new Topology
                        {
                            Node = CreateNodeFromCert(cert),
                            Links = new Link[]
                            {
                                new Link
                                {
                                    From = _siteNodeRefCreator.CreateNodeRefFromObj(site),
                                    To = _certificateNodeRefCreator.CreateNodeRefFromObj(cert),
                                    LinkType = LinkType.Binding
                                }
                            }
                        });
                    }
                }

                store.Close();
            }
        }
 public IEnumerable <Topology> Collect()
 {
     using (var iisManager = new ServerManager())
     {
         return(iisManager.ApplicationPools
                .Select(pool => new Topology
         {
             Node = CreateNodeFromAppPool(pool),
             Links = new Link[]
             {
                 new Link
                 {
                     From = _serverNodeRefCreator.CreateNodeRefFromObj(null),
                     To = _appPoolNodeRefCreator.CreateNodeRefFromObj(pool),
                     LinkType = LinkType.Hierarchy
                 }
             }
         })
                .ToArray());
     }
 }
示例#4
0
        public IEnumerable <Topology> Collect()
        {
            var serverRef = _serverNodeRefCreator.CreateNodeRefFromObj(null);

            return(new Topology[]
            {
                new Topology {
                    Node = new Node
                    {
                        NodeRef = serverRef,
                        Name = serverRef.Parts[AgentConstants.NodeRefPart.MachineName],
                        Status = AgentConstants.Status.Running,
                        CreationTime = DateTimeOffset.UtcNow,
                        ModificationTime = DateTimeOffset.UtcNow,
                        Properties = new Dictionary <string, string>(),
                    },
                    Links = new Link[0]
                }
            });
        }