in src/IdFix/Rules/RulesRunner.cs [238:269]
private List<string> ExecuteRuleCollectionSchemaCheck(RuleCollection collection, LdapConnection connection)
{
this.OnStatusUpdate?.Invoke(StringLiterals.LdapConnectionEstablishing);
var schemaDistinguishedName = this.GetSchemaDistinguishedName(connection);
using (var searcher = collection.CreateSchemaSearcher(schemaDistinguishedName))
{
this.OnStatusUpdate?.Invoke(StringLiterals.LdapConnectionEstablished);
this.OnStatusUpdate?.Invoke(StringLiterals.BeginningQuery);
if (this.CancellationPending)
{
return null;
}
var replicatedAttributes = new List<string>();
var results = searcher.FindAll();
foreach (System.DirectoryServices.SearchResult entry in results)
{
if (entry.Properties.Contains(Constants.IsMemberOfPartialAttributeSetAttribute)
&& entry.Properties[Constants.IsMemberOfPartialAttributeSetAttribute].Count > 0
&& (bool)entry.Properties[Constants.IsMemberOfPartialAttributeSetAttribute][0] == true)
{
replicatedAttributes.Add(entry.Properties[Constants.LdapDisplayNameAttribute][0].ToString());
}
}
var notReplicatedAttributes = collection.AttributesToQuery.Where(_ => !replicatedAttributes.Contains(_, StringComparer.InvariantCultureIgnoreCase)).ToList();
return notReplicatedAttributes;
}
}