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()); } }
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] } }); }