public ActiveDirectoryChangeTrigger(ManagementAgent ma) { if (!ActiveDirectoryChangeTrigger.CanCreateForMA(ma)) { throw new InvalidOperationException("The specified management agent is not an AD or LDS management agent"); } this.LastLogonTimestampOffset = new TimeSpan(0, 5, 0); this.MinimumIntervalBetweenEvents = new TimeSpan(0, 1, 0); this.UseExplicitCredentials = false; string privateData = ma.ExportManagementAgent(); XmlDocument d = new XmlDocument(); d.LoadXml(privateData); XmlNode partitionNode = d.SelectSingleNode("/export-ma/ma-data/ma-partition-data/partition[selected=1 and custom-data/adma-partition-data[is-domain=1]]"); if (partitionNode == null) { return; } this.HostName = partitionNode.SelectSingleNode("custom-data/adma-partition-data/name")?.InnerText; this.BaseDN = partitionNode.SelectSingleNode("custom-data/adma-partition-data/dn")?.InnerText; this.ObjectClasses = partitionNode.SelectNodes("filter/object-classes/object-class")?.OfType <XmlElement>().Where(t => t.InnerText != "container" && t.InnerText != "domainDNS" && t.InnerText != "organizationalUnit").Select(u => u.InnerText).ToArray(); }
private static bool IsSourceMA(ManagementAgent ma) { string madata = ma.ExportManagementAgent(); XmlDocument d = new XmlDocument(); d.LoadXml(madata); int eafCount = d.SelectNodes("/export-ma/ma-data/export-attribute-flow/export-flow-set/export-flow")?.Count ?? 0; int iafCount = d.SelectNodes($"/export-ma/mv-data/import-attribute-flow/import-flow-set/import-flows/import-flow[@src-ma='{ma.ID.ToString("B").ToUpper()}']")?.Count ?? 0; return(iafCount > eafCount); }