private static ExchangeConfigurationUnit RetrieveLocalTempateTenant() { ADPagedReader <ExchangeConfigurationUnit> adpagedReader = TemplateTenantConfiguration.FindAllTempateTenants(TemplateTenantConfiguration.ProgramId, TemplateTenantConfiguration.OfferId, PartitionId.LocalForest); ExchangeConfigurationUnit[] array = adpagedReader.ReadAllPages(); switch (array.Length) { case 0: return(null); case 1: return(array[0]); default: { Array.Sort <ExchangeConfigurationUnit>(array, new Comparison <ExchangeConfigurationUnit>(SharedConfiguration.CompareBySharedConfigurationInfo)); ExchangeConfigurationUnit result = array[0]; foreach (ExchangeConfigurationUnit exchangeConfigurationUnit in array) { if (!(exchangeConfigurationUnit.SharedConfigurationInfo != null) || ((IComparable)ServerVersion.InstalledVersion).CompareTo(exchangeConfigurationUnit.SharedConfigurationInfo.CurrentVersion) < 0) { break; } result = exchangeConfigurationUnit; } return(result); } } }
private static int GetBruteForceCountImmediate(string domainController, OrganizationId orgId, string systemAddressListName, int countQuota) { QueryFilter filter; if (!CannedSystemAddressLists.GetFilterByAddressList(systemAddressListName, out filter)) { throw new ArgumentException("SystemAddressListName"); } ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), orgId, null, false); IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(domainController, true, ConsistencyMode.PartiallyConsistent, sessionSettings, 278, "GetBruteForceCountImmediate", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\SystemConfiguration\\ConfigurationCache\\SystemAddressListMemberCount.cs"); ADPagedReader <MiniRecipient> adpagedReader = tenantOrRootOrgRecipientSession.FindPagedMiniRecipient <MiniRecipient>(null, QueryScope.OneLevel, filter, null, 0, new PropertyDefinition[] { ADObjectSchema.Id }); int num = 0; foreach (MiniRecipient miniRecipient in adpagedReader) { num++; if (num >= countQuota) { return(num); } } return(num); }
// Token: 0x060000A9 RID: 169 RVA: 0x000044A0 File Offset: 0x000026A0 private IEnumerable <T> LoadData(ITopologyConfigurationSession session, QueryFilter filter, bool includeDeletedObjects) { ExTraceGlobals.ADConfigLoaderTracer.TraceDebug <string, object>((long)this.GetHashCode(), "Loading objects of type {0} with filter {1} from AD", ADConfigLoader <T> .typeName, filter ?? "<null>"); ADPagedReader <T> adpagedReader = session.FindPaged <T>(session.GetConfigurationNamingContext(), QueryScope.SubTree, filter, null, ADGenericPagedReader <T> .DefaultPageSize); adpagedReader.IncludeDeletedObjects = includeDeletedObjects; ExTraceGlobals.ADConfigLoaderTracer.TraceDebug <string>((long)this.GetHashCode(), "Loaded objects of type {0} from AD", ADConfigLoader <T> .typeName); return(adpagedReader); }
private void ReadPropertiesFromAD(List <ADPropertyDefinition> propertiesToRead, bool isAll) { int num = 0; bool flag = isAll || num < propertiesToRead.Count; int arg = 0; while (flag) { QueryFilter queryFilter; if (isAll) { queryFilter = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.ObjectClass, "attributeSchema"); } else { HashSet <string> hashSet = new HashSet <string>(StringComparer.OrdinalIgnoreCase); while (hashSet.Count < 20 && num < propertiesToRead.Count) { string ldapDisplayName = propertiesToRead[num++].LdapDisplayName; if (!this.schemaAttributeObjectDictionary.ContainsKey(ldapDisplayName)) { hashSet.Add(ldapDisplayName); } } if (hashSet.Count == 0) { return; } arg = hashSet.Count; QueryFilter[] array = new QueryFilter[hashSet.Count]; int num2 = 0; foreach (string propertyValue in hashSet) { array[num2++] = new ComparisonFilter(ComparisonOperator.Equal, ADSchemaAttributeSchema.LdapDisplayName, propertyValue); } queryFilter = QueryFilter.OrTogether(array); } ADPagedReader <ADSchemaAttributeObject> adpagedReader = this.schemaSession.FindPaged <ADSchemaAttributeObject>(this.schemaSession.GetSchemaNamingContext(), QueryScope.OneLevel, queryFilter, null, 0); int num3 = 0; foreach (ADSchemaAttributeObject adschemaAttributeObject in adpagedReader) { if (!this.schemaAttributeObjectDictionary.ContainsKey(adschemaAttributeObject.LdapDisplayName)) { this.schemaAttributeObjectDictionary.TryAdd(adschemaAttributeObject.LdapDisplayName, adschemaAttributeObject); } num3++; } ExTraceGlobals.SchemaInitializationTracer.TraceDebug <int, int, QueryFilter>((long)this.GetHashCode(), "Batch Read: Expected {0} results. Found {1} results. Filter: {2}", arg, num3, queryFilter); flag = (!isAll && num < propertiesToRead.Count); } }
// Token: 0x06000361 RID: 865 RVA: 0x00012710 File Offset: 0x00010910 public static void ReadConfigurationPaged <T>(ADConfigurationReader <ADPagedReader <T> > configurationReader, ADConfigurationProcessor <T> configurationProcessor, int retryCount) where T : IConfigurable, new() { if (configurationProcessor == null) { throw new ArgumentNullException("configurationProcessor"); } ADPagedReader <T> pagedReader = ADNotificationAdapter.ReadConfiguration <ADPagedReader <T> >(configurationReader, retryCount); IEnumerator <T> enumerator = null; ADNotificationAdapter.RunADOperation(delegate() { enumerator = pagedReader.GetEnumerator(); }, retryCount); Breadcrumbs <Exception> exceptions = new Breadcrumbs <Exception>(32); try { for (;;) { bool hasMore = false; ADNotificationAdapter.RunADOperation(delegate() { try { hasMore = enumerator.MoveNext(); } catch (Exception bc) { exceptions.Drop(bc); enumerator.Dispose(); enumerator = pagedReader.GetEnumerator(); throw; } }, retryCount); if (!hasMore) { break; } configurationProcessor(enumerator.Current); } } finally { enumerator.Dispose(); } }
private static IEnumerable <T> FindPagedAllMatchingObjects <T>(QueryFilter filter, bool includeAccountForestRootOrg, bool includeResourceForest, bool useGC, ConsistencyMode consistencyMode, bool useRecipientSession, bool includeSoftDeletedObject, bool includeSecondaryPartitions) where T : ADObject, new() { IEnumerable <ADSessionSettings> sessionSettingsCollection = PartitionDataAggregator.CreateSessionSettingsCollection(includeAccountForestRootOrg, includeResourceForest, includeSecondaryPartitions); foreach (ADSessionSettings sessionSettings in sessionSettingsCollection) { if (includeSoftDeletedObject) { sessionSettings.IncludeSoftDeletedObjects = true; } IDirectorySession session = PartitionDataAggregator.GetDirectorySession(consistencyMode, useRecipientSession, sessionSettings); session.UseGlobalCatalog = useGC; ADPagedReader <T> reader = session.FindPaged <T>(null, QueryScope.SubTree, filter, null, 0, null); foreach (T result in reader) { yield return(result); } } yield break; }
public static IEnumerable <ADUser> GetUMEnabledUsersInDatabase(MailboxDatabase database) { QueryFilter filter = UMMailbox.GetUMEnabledUserQueryFilter(database); foreach (PartitionId partitionId in ADAccountPartitionLocator.GetAllAccountPartitionIds(true)) { ADSessionSettings settings = ADSessionSettings.FromAllTenantsPartitionId(partitionId); ITenantRecipientSession session = DirectorySessionFactory.Default.CreateTenantRecipientSession(null, null, LcidMapper.DefaultLcid, true, ConsistencyMode.IgnoreInvalid, null, settings, 199, "GetUMEnabledUsersInDatabase", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\PartitionDataAggregator.cs"); ADPagedReader <ADRecipient> recipientReader = session.FindPaged(null, QueryScope.SubTree, filter, null, 0); foreach (ADRecipient recipient in recipientReader) { ADUser user = recipient as ADUser; if (user != null) { yield return(user); } } } yield break; }