internal PartitionId(Guid partitionObjectId) { if (partitionObjectId == Guid.Empty) { throw new ArgumentNullException("partitionObjectId"); } this.forestFQDN = ADAccountPartitionLocator.GetAccountPartitionFqdnByPartitionGuid(partitionObjectId); this.ValidatePartitionFqdn(this.forestFQDN); this.partitionObjectId = new Guid?(partitionObjectId); }
// Token: 0x06000324 RID: 804 RVA: 0x00010FCC File Offset: 0x0000F1CC internal static string GetAccountPartitionFqdnByPartitionGuid(Guid partitionGuid) { ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); string result; if (!ADAccountPartitionLocator.partitionsGuidToFQDN.TryGetValue(partitionGuid, out result)) { throw new CannotResolvePartitionException(DirectoryStrings.CannotResolvePartitionGuidError(partitionGuid.ToString())); } return(result); }
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()); }
// Token: 0x06000316 RID: 790 RVA: 0x00010B78 File Offset: 0x0000ED78 public static bool IsKnownPartition(PartitionId partitionId) { if (TopologyProvider.IsAdamTopology()) { return(true); } if (!Globals.IsMicrosoftHostedOnly && partitionId.PartitionObjectId == null) { return(false); } ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); return(partitionId.IsLocalForestPartition() || ADAccountPartitionLocator.partitionsFQDNToGuid.ContainsKey(partitionId.ForestFQDN)); }
// Token: 0x06000325 RID: 805 RVA: 0x00011008 File Offset: 0x0000F208 internal static bool IsSingleForestTopology(out PartitionId singleForestPartition) { ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); singleForestPartition = null; PartitionId[] array = ADAccountPartitionLocator.allExplicitlyConfiguredAccountPartitionIds; bool result = false; if (array.Length == 1) { singleForestPartition = array[0]; result = true; } return(result); }
public Guid GetExternalDirectoryOrganizationId() { Guid result; if (this.externalDirectoryOrganizationId != null) { result = this.externalDirectoryOrganizationId.Value; } else { result = ADAccountPartitionLocator.GetExternalDirectoryOrganizationIdByTenantName(this.tenantName, this.partitionId); } return(result); }
// Token: 0x0600031A RID: 794 RVA: 0x00010C84 File Offset: 0x0000EE84 public static string GetResourceForestFqdnByExternalDirectoryOrganizationId(Guid externalDirectoryOrganizationId) { if (!Globals.IsMicrosoftHostedOnly) { return(PartitionId.LocalForest.ForestFQDN); } TenantPartitionCacheItem tenantPartitionCacheItem = ADAccountPartitionLocator.FindTenantInfoByExternalOrgId(externalDirectoryOrganizationId); if (tenantPartitionCacheItem != null) { ADAccountPartitionLocator.EnsureAllowedCallerForUnregisteredAccountPartition(tenantPartitionCacheItem); return(tenantPartitionCacheItem.ResourceForestFqdn); } throw new CannotResolveExternalDirectoryOrganizationIdException(DirectoryStrings.CannotResolveTenantNameByExternalDirectoryId(externalDirectoryOrganizationId.ToString())); }
// Token: 0x06000319 RID: 793 RVA: 0x00010C40 File Offset: 0x0000EE40 public static string GetResourceForestFqdnByAcceptedDomainName(string acceptedDomainName) { if (!Globals.IsMicrosoftHostedOnly) { return(PartitionId.LocalForest.ForestFQDN); } TenantPartitionCacheItem tenantPartitionCacheItem = ADAccountPartitionLocator.FindTenantInfoByAcceptedDomain(acceptedDomainName); if (tenantPartitionCacheItem != null) { ADAccountPartitionLocator.EnsureAllowedCallerForUnregisteredAccountPartition(tenantPartitionCacheItem); return(tenantPartitionCacheItem.ResourceForestFqdn); } throw new CannotResolveTenantNameException(DirectoryStrings.CannotResolveTenantNameByAcceptedDomain(acceptedDomainName)); }
// Token: 0x06000315 RID: 789 RVA: 0x00010B34 File Offset: 0x0000ED34 public static PartitionId SelectAccountPartitionForNewTenant(string name) { PartitionId[] array = ADAccountPartitionLocator.GetAllAccountPartitionIdsEnabledForProvisioning(); if (array == null || array.Length == 0) { return(null); } if (array.Length == 1) { return(array[0]); } int num = Math.Abs(name.ToUpperInvariant().GetHashCode()); int num2 = num % array.Length; return(array[num2]); }
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); }
// Token: 0x06000329 RID: 809 RVA: 0x00011358 File Offset: 0x0000F558 private static TenantPartitionCacheItem FindTenantInfoByExternalOrgId(Guid externalOrgId) { TenantPartitionCacheItem tenantPartitionCacheItem = null; if (externalOrgId == TemplateTenantConfiguration.TemplateTenantExternalDirectoryOrganizationIdGuid) { ExchangeConfigurationUnit localTemplateTenant = TemplateTenantConfiguration.GetLocalTemplateTenant(); if (localTemplateTenant != null) { ExTraceGlobals.GLSTracer.TraceDebug <string>(0L, "FindTenantInfoByExternalOrgId() asked for Consumer Template tenant, returning {0}", localTemplateTenant.Id.Parent.DistinguishedName); string name = localTemplateTenant.Id.Parent.Name; tenantPartitionCacheItem = new TenantPartitionCacheItem(Guid.Empty, localTemplateTenant.OrganizationId.PartitionId.ForestFQDN, PartitionId.LocalForest.ForestFQDN, externalOrgId, name, false); } return(tenantPartitionCacheItem); } PartitionId partitionId; if (!ADSessionSettings.IsGlsDisabled) { if (ADAccountPartitionLocator.TryLookUpAccountForest(externalOrgId, null, null, out tenantPartitionCacheItem)) { return(tenantPartitionCacheItem); } } else if (ADAccountPartitionLocator.IsSingleForestTopology(out partitionId)) { ExTraceGlobals.GLSTracer.TraceDebug <Guid>(0L, "GLS is disabled, performing the only partition lookup for {0}", externalOrgId); return(ADAccountPartitionLocator.SearchForTenantInfoByExternalOrgId(externalOrgId, partitionId)); } if (GlsMServDirectorySession.ShouldScanAllForests) { ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); PartitionId[] array = ADAccountPartitionLocator.allAccountPartitionIds; foreach (PartitionId partitionId2 in array) { tenantPartitionCacheItem = ADAccountPartitionLocator.SearchForTenantInfoByExternalOrgId(externalOrgId, partitionId2); if (tenantPartitionCacheItem != null) { ADAccountPartitionLocator.InsertCacheMaps(tenantPartitionCacheItem, null, null); return(tenantPartitionCacheItem); } } } return(null); }
// Token: 0x0600031C RID: 796 RVA: 0x00010CEC File Offset: 0x0000EEEC public static PartitionId GetPartitionIdByExternalDirectoryOrganizationId(Guid externalDirectoryOrganizationId, out string tenantContainerCN) { tenantContainerCN = null; TenantPartitionCacheItem tenantPartitionCacheItem = ADAccountPartitionLocator.FindTenantInfoByExternalOrgId(externalDirectoryOrganizationId); if (tenantPartitionCacheItem != null) { ADAccountPartitionLocator.EnsureAllowedCallerForUnregisteredAccountPartition(tenantPartitionCacheItem); tenantContainerCN = tenantPartitionCacheItem.TenantName; return(tenantPartitionCacheItem.AccountPartitionId); } Globals.LogEvent(DirectoryEventLogConstants.Tuple_CannotResolveExternalDirectoryOrganizationId, externalDirectoryOrganizationId.ToString(), new object[] { DirectoryStrings.CannotResolveTenantNameByExternalDirectoryId(externalDirectoryOrganizationId.ToString()), Environment.StackTrace }); throw new CannotResolveExternalDirectoryOrganizationIdException(DirectoryStrings.CannotResolveTenantNameByExternalDirectoryId(externalDirectoryOrganizationId.ToString())); }
// Token: 0x0600032E RID: 814 RVA: 0x00011838 File Offset: 0x0000FA38 private static Guid?GetPartitionGuid(PartitionId partitionId) { if (partitionId == null) { throw new ArgumentNullException("partitionId"); } Guid guid = (partitionId.PartitionObjectId == null) ? Guid.Empty : partitionId.PartitionObjectId.Value; if (guid == Guid.Empty) { ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); if (!ADAccountPartitionLocator.partitionsFQDNToGuid.TryGetValue(partitionId.ForestFQDN, out guid)) { return(null); } } return(new Guid?(guid)); }
// Token: 0x06000318 RID: 792 RVA: 0x00010BE0 File Offset: 0x0000EDE0 public static PartitionId GetPartitionIdByAcceptedDomainName(string acceptedDomainName, out string tenantContainerCN, out Guid externalDirectoryOrganizationId) { tenantContainerCN = null; externalDirectoryOrganizationId = Guid.Empty; if (!Globals.IsMicrosoftHostedOnly) { return(PartitionId.LocalForest); } TenantPartitionCacheItem tenantPartitionCacheItem = ADAccountPartitionLocator.FindTenantInfoByAcceptedDomain(acceptedDomainName); if (tenantPartitionCacheItem != null) { ADAccountPartitionLocator.EnsureAllowedCallerForUnregisteredAccountPartition(tenantPartitionCacheItem); tenantContainerCN = tenantPartitionCacheItem.TenantName; externalDirectoryOrganizationId = tenantPartitionCacheItem.ExternalOrgId; return(tenantPartitionCacheItem.AccountPartitionId); } throw new CannotResolveTenantNameException(DirectoryStrings.CannotResolveTenantNameByAcceptedDomain(acceptedDomainName)); }
// Token: 0x06000332 RID: 818 RVA: 0x00011BF4 File Offset: 0x0000FDF4 private static void LoadPartitionCacheIfNecessary() { if (ADAccountPartitionLocator.partitionsFQDNToGuid == null) { ADAccountPartitionLocator.RefreshAllAccountPartitions(); Interlocked.Exchange(ref ADAccountPartitionLocator.lastRefreshTick, Environment.TickCount); return; } int num = ADAccountPartitionLocator.lastRefreshTick; if (Globals.GetTickDifference(num, Environment.TickCount) > (ulong)ADAccountPartitionLocator.PartitionCacheRefreshEveryNMilliseconds) { int num2 = Interlocked.CompareExchange(ref ADAccountPartitionLocator.lastRefreshTick, Environment.TickCount, num); if (num == num2) { ADAccountPartitionLocator.RefreshAllAccountPartitions(); } } }
// Token: 0x0600032D RID: 813 RVA: 0x000117EC File Offset: 0x0000F9EC private static TenantPartitionCacheItem FindTenantInfoByMSAUserNetID(string msaUserNetID) { PartitionId partitionId; if (!ADSessionSettings.IsGlsDisabled) { TenantPartitionCacheItem result; if (ADAccountPartitionLocator.TryLookUpAccountForest(Guid.Empty, null, msaUserNetID, out result)) { return(result); } } else if (ADAccountPartitionLocator.IsSingleForestTopology(out partitionId)) { ExTraceGlobals.GLSTracer.TraceDebug <string>(0L, "GLS is disabled, performing the only partition lookup for a Microsoft Account (MSA, formerly known as Windows Live ID) user with NetID {0}", msaUserNetID); return(ADAccountPartitionLocator.SearchForTenantInfoByUserNetID(msaUserNetID, partitionId)); } return(null); }
// Token: 0x0600031D RID: 797 RVA: 0x00010D74 File Offset: 0x0000EF74 public static PartitionId GetPartitionIdByMSAUserNetID(string msaUserNetID, out string tenantContainerCN, out Guid externalDirectoryOrganizationId) { tenantContainerCN = null; externalDirectoryOrganizationId = Guid.Empty; TenantPartitionCacheItem tenantPartitionCacheItem = ADAccountPartitionLocator.FindTenantInfoByMSAUserNetID(msaUserNetID); if (tenantPartitionCacheItem != null) { ADAccountPartitionLocator.EnsureAllowedCallerForUnregisteredAccountPartition(tenantPartitionCacheItem); tenantContainerCN = tenantPartitionCacheItem.TenantName; externalDirectoryOrganizationId = tenantPartitionCacheItem.ExternalOrgId; return(tenantPartitionCacheItem.AccountPartitionId); } Globals.LogEvent(DirectoryEventLogConstants.Tuple_CannotResolveMSAUserNetID, msaUserNetID, new object[] { DirectoryStrings.CannotFindTenantByMSAUserNetID(msaUserNetID), Environment.StackTrace }); throw new CannotResolveMSAUserNetIDException(DirectoryStrings.CannotFindTenantByMSAUserNetID(msaUserNetID)); }
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; }
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); }
// Token: 0x0600031F RID: 799 RVA: 0x00010E68 File Offset: 0x0000F068 public static bool ValidateDomainName(AcceptedDomain domain, Exception duplicateAcceptedDomainException, Exception conflictingAcceptedDomainException, out Exception error) { IConfigurationSession session; if (Globals.IsDatacenter) { try { session = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.FullyConsistent, ADSessionSettings.FromTenantAcceptedDomain(domain.DomainName.Domain), 432, "ValidateDomainName", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\ADAccountPartitionLocator.cs"); goto IL_5C; } catch (CannotResolveTenantNameException) { error = null; return(true); } } session = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.FullyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 442, "ValidateDomainName", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\ADAccountPartitionLocator.cs"); IL_5C: return(ADAccountPartitionLocator.ValidateDomainName(domain, session, duplicateAcceptedDomainException, conflictingAcceptedDomainException, out error)); }
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; }
// Token: 0x06000323 RID: 803 RVA: 0x00010F48 File Offset: 0x0000F148 internal static Guid GetAccountPartitionGuidByPartitionId(PartitionId partitionId) { if (partitionId == null) { throw new ArgumentNullException("partitionId"); } if (partitionId.PartitionObjectId != null) { return(partitionId.PartitionObjectId.Value); } if (string.IsNullOrEmpty(partitionId.ForestFQDN)) { throw new ArgumentNullException("ForestFQDN"); } ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); Guid result; if (!ADAccountPartitionLocator.partitionsFQDNToGuid.TryGetValue(partitionId.ForestFQDN, out result)) { throw new CannotResolvePartitionException(DirectoryStrings.CannotResolvePartitionFqdnError(partitionId.ForestFQDN)); } return(result); }
// Token: 0x06000321 RID: 801 RVA: 0x00010F2A File Offset: 0x0000F12A internal static PartitionId[] GetAllAccountPartitionIds() { return(ADAccountPartitionLocator.GetAllAccountPartitionIds(false)); }
// Token: 0x06000331 RID: 817 RVA: 0x0001196C File Offset: 0x0000FB6C private static void RefreshAllAccountPartitions() { if (!Globals.IsMicrosoftHostedOnly) { ADAccountPartitionLocator.allAccountPartitionIds = new PartitionId[0]; ADAccountPartitionLocator.allExplicitlyConfiguredAccountPartitionIds = new PartitionId[0]; ADAccountPartitionLocator.allExplicitlyConfiguredPrimaryAccountPartitionIds = new PartitionId[0]; return; } AccountPartition[] array = ADAccountPartitionLocator.ReadAccountPartitionsFromAD(); IOrderedEnumerable <AccountPartition> orderedEnumerable = from x in array orderby x.WhenCreatedUTC descending select x; Dictionary <Guid, string> dictionary = new Dictionary <Guid, string>(); Dictionary <string, Guid> dictionary2 = new Dictionary <string, Guid>(StringComparer.OrdinalIgnoreCase); List <PartitionId> list = new List <PartitionId>(array.Length); List <PartitionId> list2 = new List <PartitionId>(array.Length); List <PartitionId> list3 = new List <PartitionId>(array.Length); bool flag = false; PartitionId partitionId = null; foreach (AccountPartition accountPartition in orderedEnumerable) { if (accountPartition.TryGetPartitionId(out partitionId)) { list.Add(partitionId); dictionary.Add(partitionId.PartitionObjectId.Value, partitionId.ForestFQDN); dictionary2.Add(partitionId.ForestFQDN, partitionId.PartitionObjectId.Value); if (accountPartition.EnabledForProvisioning) { list3.Add(partitionId); } if (!accountPartition.IsSecondary) { list2.Add(partitionId); } } if (accountPartition.IsLocalForest) { flag = true; } } if (list.Count == 0) { partitionId = new PartitionId(PartitionId.LocalForest.ForestFQDN, ADObjectId.ResourcePartitionGuid); list.Add(partitionId); list3.Add(partitionId); } lock (ADAccountPartitionLocator.modifySyncObject) { ADAccountPartitionLocator.allAccountPartitionIds = list.ToArray(); ADAccountPartitionLocator.allExplicitlyConfiguredAccountPartitionIds = list.ToArray(); ADAccountPartitionLocator.allExplicitlyConfiguredPrimaryAccountPartitionIds = list2.ToArray(); ADAccountPartitionLocator.allAccountPartitionIdsEnabledForProvisioning = list3.ToArray(); ADAccountPartitionLocator.partitionsGuidToFQDN = dictionary; ADAccountPartitionLocator.partitionsFQDNToGuid = dictionary2; if (!flag) { partitionId = new PartitionId(PartitionId.LocalForest.ForestFQDN, ADObjectId.ResourcePartitionGuid); PartitionId[] array2 = new PartitionId[ADAccountPartitionLocator.allAccountPartitionIds.Length + 1]; array2[0] = partitionId; Array.Copy(ADAccountPartitionLocator.allAccountPartitionIds, 0, array2, 1, ADAccountPartitionLocator.allAccountPartitionIds.Length); ADAccountPartitionLocator.allAccountPartitionIds = array2; ADAccountPartitionLocator.partitionsFQDNToGuid.Add(partitionId.ForestFQDN, partitionId.PartitionObjectId.Value); ADAccountPartitionLocator.partitionsGuidToFQDN.Add(partitionId.PartitionObjectId.Value, partitionId.ForestFQDN); } } ADAccountPartitionLocator.crossRFLookupCheckEnabled = ADAccountPartitionLocator.UpdateCrossRFLookupCheckEnabled(); }
// Token: 0x0600032A RID: 810 RVA: 0x00011460 File Offset: 0x0000F660 private static bool TryLookUpAccountForest(Guid externalDirectoryOrganizationId, string acceptedDomain, string msaUserNetID, out TenantPartitionCacheItem cacheItem) { cacheItem = null; Exception ex = null; if (acceptedDomain == string.Empty) { throw new ArgumentException(acceptedDomain); } if (msaUserNetID == string.Empty) { throw new ArgumentException(msaUserNetID); } try { IGlobalDirectorySession globalSession = DirectorySessionFactory.GetGlobalSession(null); bool dataFromOfflineService = false; string resourceForestFqdn; string text; string tenantName; bool flag; if (acceptedDomain != null) { if (ADAccountPartitionLocator.acceptedDomainPartitionCache.TryGetValue(acceptedDomain, out cacheItem)) { ADProviderPerf.UpdateGlsCacheHitRatio(GlsLookupKey.AcceptedDomain, true); return(true); } ADProviderPerf.UpdateGlsCacheHitRatio(GlsLookupKey.AcceptedDomain, false); string text2; flag = globalSession.TryGetTenantForestsByDomain(acceptedDomain, out externalDirectoryOrganizationId, out resourceForestFqdn, out text, out text2, out tenantName, out dataFromOfflineService); } else if (externalDirectoryOrganizationId != Guid.Empty) { if (ADAccountPartitionLocator.externalOrgIdPartitionCache.TryGetValue(externalDirectoryOrganizationId, out cacheItem)) { ADProviderPerf.UpdateGlsCacheHitRatio(GlsLookupKey.ExternalDirectoryObjectId, true); return(true); } ADProviderPerf.UpdateGlsCacheHitRatio(GlsLookupKey.ExternalDirectoryObjectId, false); flag = globalSession.TryGetTenantForestsByOrgGuid(externalDirectoryOrganizationId, out resourceForestFqdn, out text, out tenantName, out dataFromOfflineService); } else { if (ADAccountPartitionLocator.msaUserNetIdPartitionCache.TryGetValue(msaUserNetID, out cacheItem)) { ADProviderPerf.UpdateGlsCacheHitRatio(GlsLookupKey.MSAUserNetID, true); return(true); } ADProviderPerf.UpdateGlsCacheHitRatio(GlsLookupKey.MSAUserNetID, false); flag = globalSession.TryGetTenantForestsByMSAUserNetID(msaUserNetID, out externalDirectoryOrganizationId, out resourceForestFqdn, out text, out tenantName); } if (flag) { ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); Guid accountPartitionGuid; ADAccountPartitionLocator.partitionsFQDNToGuid.TryGetValue(text, out accountPartitionGuid); cacheItem = new TenantPartitionCacheItem(accountPartitionGuid, text, resourceForestFqdn, externalDirectoryOrganizationId, tenantName, dataFromOfflineService); ADAccountPartitionLocator.InsertCacheMaps(cacheItem, acceptedDomain, msaUserNetID); return(true); } } catch (MServTransientException ex2) { ex = ex2; if (!GlsMServDirectorySession.ShouldScanAllForests) { throw; } } catch (MServPermanentException ex3) { ex = ex3; if (!GlsMServDirectorySession.ShouldScanAllForests) { throw; } } catch (TransientException ex4) { ex = ex4; if (!GlsMServDirectorySession.ShouldScanAllForests) { throw; } } catch (GlsPermanentException ex5) { ex = ex5; if (!GlsMServDirectorySession.ShouldScanAllForests) { throw; } } catch (GlsTenantNotFoundException ex6) { ex = ex6; if (!GlsMServDirectorySession.ShouldScanAllForests) { throw; } } if (ex != null) { ExTraceGlobals.GLSTracer.TraceWarning <Exception>(0L, "Got exception while doing GLS lookup in ADAccountPartitionLocator, ignoring it until 2605034 is fixed {0}", ex); } return(false); }
// Token: 0x0600031B RID: 795 RVA: 0x00010CD4 File Offset: 0x0000EED4 public static PartitionId GetPartitionIdByExternalDirectoryOrganizationId(Guid externalDirectoryOrganizationId) { string text; return(ADAccountPartitionLocator.GetPartitionIdByExternalDirectoryOrganizationId(externalDirectoryOrganizationId, out text)); }
// Token: 0x06000314 RID: 788 RVA: 0x00010B26 File Offset: 0x0000ED26 public static PartitionId[] GetAllAccountPartitionIdsEnabledForProvisioning() { ADAccountPartitionLocator.LoadPartitionCacheIfNecessary(); return(ADAccountPartitionLocator.allAccountPartitionIdsEnabledForProvisioning); }