示例#1
0
        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);
        }