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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        // 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;
        }