public virtual IDirectoryEntry GetEntry(string attributeValue, IEntryConfig entryConfig, Func <IEntry, IDirectorySearcher> searcherFactory) { IDirectoryEntry directoryEntry = null; if (attributeValue == null) { return(null); } var dn = nameParser.GetDnObject(attributeValue); var dnValue = dn != null; if (dnValue && dn.Rdns.Count() > 1) { var uri = new Uri(new Uri(entryConfig.Path), dn.ToString()); return(GetEntry(uri, serverConfig.Username, serverConfig.Password)); } var entry = GetEntry(entryConfig.Path); if (entry.IsBound()) { var directorySearcher = searcherFactory(entry); directorySearcher.Filter = CreateFilter(dnValue, entryConfig.RdnAttribute, attributeValue, entryConfig.Filter); directoryEntry = GetEntry(directorySearcher); } return(directoryEntry); }
public virtual IDirectorySearcher CreateSearcher(IEntry entry, SearchScope searchScope, IEntryConfig entryConfig) { var searcher = CreateSearcher(entry, searchScope, entryConfig.RdnAttribute); searcher.PropertiesToLoad.Add(entryConfig.RdnAttribute); foreach(var attribute in entryConfig.Attributes) { searcher.PropertiesToLoad.Add(attribute.Name); } return searcher; }
public virtual IDirectorySearcher CreateSearcher(IEntry entry, SearchScope searchScope, IEntryConfig entryConfig) { var searcher = CreateSearcher(entry, searchScope, entryConfig.RdnAttribute); searcher.PropertiesToLoad.Add(entryConfig.RdnAttribute); foreach (var attribute in entryConfig.Attributes) { searcher.PropertiesToLoad.Add(attribute.Name); } return(searcher); }