コード例 #1
0
        private static IEnumerable <ADSessionSettings> CreateSessionSettingsCollection(bool includeAccountForestRootOrg, bool includeResourceForest, bool includeSecondaryPartitions = false)
        {
            List <ADSessionSettings> list = new List <ADSessionSettings>();
            bool flag = false;

            if (VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled)
            {
                PartitionId[] allAccountPartitionIds = ADAccountPartitionLocator.GetAllAccountPartitionIds(includeSecondaryPartitions);
                list.AddRange(allAccountPartitionIds.Select(new Func <PartitionId, ADSessionSettings>(ADSessionSettings.FromAllTenantsPartitionId)));
                if (includeAccountForestRootOrg)
                {
                    list.AddRange(allAccountPartitionIds.Select(new Func <PartitionId, ADSessionSettings>(ADSessionSettings.FromAccountPartitionRootOrgScopeSet)));
                    flag = allAccountPartitionIds.Contains(PartitionId.LocalForest);
                    if (ExEnvironment.IsTest && !flag)
                    {
                        flag = allAccountPartitionIds.Any((PartitionId id) => id.ForestFQDN.Contains(PartitionId.LocalForest.ForestFQDN));
                    }
                }
            }
            if (includeResourceForest && !flag)
            {
                list.Add(ADSessionSettings.FromRootOrgScopeSet());
            }
            return(list);
        }
コード例 #2
0
 public static void RunOperationOnAllAccountPartitions(bool readOnly, PartitionDataAggregator.OperationDelegate operation)
 {
     foreach (PartitionId partitionId in ADAccountPartitionLocator.GetAllAccountPartitionIds())
     {
         ADSessionSettings sessionSettings  = ADSessionSettings.FromAllTenantsPartitionId(partitionId);
         IRecipientSession recipientSession = DirectorySessionFactory.Default.CreateTenantRecipientSession(readOnly, ConsistencyMode.IgnoreInvalid, sessionSettings, 185, "RunOperationOnAllAccountPartitions", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\PartitionDataAggregator.cs");
         operation(recipientSession);
     }
 }
コード例 #3
0
        public static ADUser[] FindAllArbitrationMailboxes(string legDN)
        {
            List <ADUser> list = new List <ADUser>();

            foreach (PartitionId partitionId in ADAccountPartitionLocator.GetAllAccountPartitionIds())
            {
                IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromAllTenantsPartitionId(partitionId), 367, "FindAllArbitrationMailboxes", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\PartitionDataAggregator.cs");
                ADUser[]          collection = tenantOrRootOrgRecipientSession.FindPaged <ADUser>(RecipientFilterHelper.DiscoveryMailboxFilterForAuditLog(legDN), null, true, null, 0).ToArray <ADUser>();
                list.AddRange(collection);
            }
            return(list.ToArray());
        }
コード例 #4
0
        public static ADRawEntry FindUserBySid(SecurityIdentifier sId, IList <PropertyDefinition> properties, ref IRecipientSession recipientSession)
        {
            ADRawEntry adrawEntry = null;

            foreach (PartitionId partitionId in ADAccountPartitionLocator.GetAllAccountPartitionIds())
            {
                ITenantRecipientSession tenantRecipientSession = DirectorySessionFactory.Default.CreateTenantRecipientSession(true, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromAllTenantsPartitionId(partitionId), 286, "FindUserBySid", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\PartitionDataAggregator.cs");
                adrawEntry = tenantRecipientSession.FindUserBySid(sId, properties);
                if (adrawEntry != null)
                {
                    recipientSession = tenantRecipientSession;
                    break;
                }
            }
            return(adrawEntry);
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        public static MiniRecipient GetMiniRecipientFromUserId(SecurityIdentifier sid, IEnumerable <PropertyDefinition> properties, ConsistencyMode consistencyMode)
        {
            MiniRecipient miniRecipient = null;

            foreach (PartitionId partitionId in ADAccountPartitionLocator.GetAllAccountPartitionIds())
            {
                IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, consistencyMode, ADSessionSettings.FromAllTenantsPartitionId(partitionId), 249, "GetMiniRecipientFromUserId", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\PartitionDataAggregator.cs");
                try
                {
                    miniRecipient = tenantOrRootOrgRecipientSession.FindMiniRecipientBySid <MiniRecipient>(sid, properties);
                }
                catch (NonUniqueRecipientException)
                {
                }
                if (miniRecipient != null)
                {
                    break;
                }
            }
            return(miniRecipient);
        }
コード例 #7
0
        private static IEnumerable <T> FindPaged <T>(QueryFilter filter, bool includeRetiredTenants = false, SortBy sortBy = null) where T : ADConfigurationObject, new()
        {
            PartitionId[] allAccountPartitionIds = ADAccountPartitionLocator.GetAllAccountPartitionIds();
            int           i = 0;

            while (i < allAccountPartitionIds.Length)
            {
                PartitionId       partitionId = allAccountPartitionIds[i];
                ADPagedReader <T> tenantReader;
                try
                {
                    ADSessionSettings adsessionSettings = ADSessionSettings.FromAllTenantsPartitionId(partitionId);
                    if (includeRetiredTenants)
                    {
                        adsessionSettings.TenantConsistencyMode = TenantConsistencyMode.IncludeRetiredTenants;
                    }
                    ITenantConfigurationSession tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.PartiallyConsistent, adsessionSettings, 641, "FindPaged", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\PartitionDataAggregator.cs");
                    tenantReader = tenantConfigurationSession.FindPaged <T>(null, QueryScope.SubTree, filter, sortBy, 0);
                }
                catch (OrgContainerNotFoundException)
                {
                    if (Globals.IsDatacenter)
                    {
                        goto IL_10B;
                    }
                    throw;
                }
                goto IL_AF;
IL_10B:
                i++;
                continue;
IL_AF:
                foreach (T request in tenantReader)
                {
                    yield return(request);
                }
                goto IL_10B;
            }
            yield break;
        }
コード例 #8
0
 // Token: 0x06000321 RID: 801 RVA: 0x00010F2A File Offset: 0x0000F12A
 internal static PartitionId[] GetAllAccountPartitionIds()
 {
     return(ADAccountPartitionLocator.GetAllAccountPartitionIds(false));
 }