Пример #1
0
        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);
        }
Пример #2
0
		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;
		}
Пример #3
0
        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);
        }