Example #1
0
        private static ADSessionSettings FromExternalDirectoryOrganizationId(Guid tenantGuid, IRoutingDiagnostics diagnostics)
        {
            DateTime          utcNow = DateTime.UtcNow;
            ADSessionSettings result;

            try
            {
                result = ADSessionSettings.FromExternalDirectoryOrganizationId(tenantGuid);
            }
            finally
            {
                diagnostics.AddGlobalLocatorLatency(DateTime.UtcNow - utcNow);
            }
            return(result);
        }
Example #2
0
            public override LoadBalancingMiniRecipient FindRecipient(DirectoryIdentity identity)
            {
                if (identity == null)
                {
                    throw new ArgumentNullException("identity", "DirectoryIdentity should not be null");
                }
                ADSessionSettings sessionSettings;

                if (identity.OrganizationId == Guid.Empty)
                {
                    sessionSettings = ADSessionSettings.FromRootOrgScopeSet();
                }
                else
                {
                    sessionSettings = ADSessionSettings.FromExternalDirectoryOrganizationId(identity.OrganizationId);
                }
                IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.IgnoreInvalid, sessionSettings, 129, "FindRecipient", "f:\\15.00.1497\\sources\\dev\\mrs\\src\\MailboxLoadBalance\\Directory\\ExchangeDirectory\\RecipientSessionAdapter.cs");
                QueryFilter       queryFilter  = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Id, identity.ADObjectId);
                QueryFilter       queryFilter2 = new ComparisonFilter(ComparisonOperator.Equal, MiniRecipientSchema.ArchiveGuid, identity.Guid);
                QueryFilter       queryFilter3 = new ComparisonFilter(ComparisonOperator.Equal, MiniRecipientSchema.ExchangeGuid, identity.Guid);
                QueryFilter       queryFilter4 = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.ExchangeObjectId, identity.Guid);
                QueryFilter       filter       = QueryFilter.OrTogether(new QueryFilter[]
                {
                    queryFilter,
                    queryFilter2,
                    queryFilter3,
                    queryFilter4
                });

                LoadBalancingMiniRecipient[] array = tenantOrRootOrgRecipientSession.Find <LoadBalancingMiniRecipient>(null, QueryScope.SubTree, filter, null, 2);
                if (array == null || array.Length == 0)
                {
                    throw new RecipientNotFoundException(identity.ToString());
                }
                if (array.Length > 1)
                {
                    throw new MultipleRecipientFoundException(identity.ToString());
                }
                return(array[0]);
            }
Example #3
0
        // Token: 0x06000A61 RID: 2657 RVA: 0x0004438C File Offset: 0x0004258C
        internal static ADRecipient GetADRecipient(Guid tenantGuid, string userLegacyDN)
        {
            ADSessionSettings sessionSettings = (tenantGuid == Guid.Empty) ? ADSessionSettings.FromRootOrgScopeSet() : ADSessionSettings.FromExternalDirectoryOrganizationId(tenantGuid);
            IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.PartiallyConsistent, sessionSettings, 48, "GetADRecipient", "f:\\15.00.1497\\sources\\dev\\MailboxAssistants\\src\\assistants\\CalendarNotification\\Utils.cs");
            ADRecipient       result = null;

            try
            {
                result = tenantOrRootOrgRecipientSession.FindByLegacyExchangeDN(userLegacyDN);
            }
            catch (NonUniqueRecipientException)
            {
                Utils.Tracer.TraceError <string>((long)typeof(MailboxData).GetHashCode(), "User {0} AD object is not unique", userLegacyDN);
            }
            catch (ADTransientException)
            {
                Utils.Tracer.TraceError <string>((long)typeof(MailboxData).GetHashCode(), "Due to ADTransientException we can't get AD object for User {0} ", userLegacyDN);
            }
            catch (ADOperationException)
            {
                Utils.Tracer.TraceError <string>((long)typeof(MailboxData).GetHashCode(), "Due to ADOperationException we can't get AD object for User {0} ", userLegacyDN);
            }
            return(result);
        }
Example #4
0
        private UnifiedPolicySyncNotificationDataProvider GetDataProvider(Guid tenantId)
        {
            ADUser mailboxOwner = this.syncArbitrationMailboxADObjectCache.Get(tenantId);

            return(new UnifiedPolicySyncNotificationDataProvider(ADSessionSettings.FromExternalDirectoryOrganizationId(tenantId), mailboxOwner, "New-CompliancePolicySyncNotification"));
        }
 protected MsoFullSyncCookieManager(Guid contextId) : base(contextId)
 {
     this.configSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(null, false, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromExternalDirectoryOrganizationId(contextId), 55, ".ctor", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\Sync\\CookieManager\\MsoFullSyncCookieManager.cs");
 }
        // Token: 0x06000033 RID: 51 RVA: 0x000034F8 File Offset: 0x000016F8
        internal static Uri GetRedirectUrlForTenantSite(string organization, string redirectTemplate, Uri originalUrl, ExEventLog eventLogger)
        {
            if (organization == null)
            {
                return(null);
            }
            ADSessionSettings sessionSettings;

            try
            {
                Guid externalDirectoryOrganizationId;
                sessionSettings = (Guid.TryParse(organization, out externalDirectoryOrganizationId) ? ADSessionSettings.FromExternalDirectoryOrganizationId(externalDirectoryOrganizationId) : ADSessionSettings.FromTenantCUName(organization));
            }
            catch (CannotResolveTenantNameException)
            {
                return(null);
            }
            catch (CannotResolveExternalDirectoryOrganizationIdException)
            {
                return(null);
            }
            ITenantConfigurationSession session = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.PartiallyConsistent, sessionSettings, 180, "GetRedirectUrlForTenantSite", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\RedirectionModule\\RedirectionHelper.cs");
            ExchangeConfigurationUnit   exchangeConfigurationUnit = RedirectionHelper.ResolveConfigurationUnitByName(organization, session);

            if (exchangeConfigurationUnit == null || exchangeConfigurationUnit.ManagementSiteLink == null)
            {
                return(null);
            }
            ADSite     localSite  = LocalSiteCache.LocalSite;
            ADObjectId adobjectId = ADObjectIdResolutionHelper.ResolveDN(exchangeConfigurationUnit.ManagementSiteLink);

            Logger.LogEvent(eventLogger, TaskEventLogConstants.Tuple_LiveIdRedirection_UsingManagementSiteLink, organization, new object[]
            {
                organization,
                exchangeConfigurationUnit.AdminDisplayVersion,
                exchangeConfigurationUnit.ManagementSiteLink
            });
            if (adobjectId.Equals(localSite.Id))
            {
                return(null);
            }
            foreach (ADObjectId adobjectId2 in localSite.ResponsibleForSites)
            {
                if (adobjectId2.Equals(adobjectId))
                {
                    Logger.LogEvent(eventLogger, TaskEventLogConstants.Tuple_LiveIdRedirection_TargetSitePresentOnResponsibleForSite, organization, new object[]
                    {
                        organization,
                        adobjectId,
                        adobjectId2
                    });
                    return(null);
                }
            }
            return(RedirectionHelper.GetRedirectUrlForTenantSite(adobjectId, redirectTemplate, originalUrl));
        }
Example #7
0
        protected override ADUser CreateOnCacheMiss(Guid key, ref bool shouldAdd)
        {
            IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(null, true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromExternalDirectoryOrganizationId(key), 42, "CreateOnCacheMiss", "f:\\15.00.1497\\sources\\dev\\data\\src\\storage\\UnifiedPolicy\\SyncArbitrationMailboxADObjectCache.cs");

            return(MailboxDataProvider.GetDiscoveryMailbox(tenantOrRootOrgRecipientSession));
        }
Example #8
0
        // Token: 0x06001573 RID: 5491 RVA: 0x00079F18 File Offset: 0x00078118
        public static IRecipientSession GetAdRecipientSession(Guid externalDirectoryOrganizationId)
        {
            ADSessionSettings sessionSettings = (externalDirectoryOrganizationId != Guid.Empty) ? ADSessionSettings.FromExternalDirectoryOrganizationId(externalDirectoryOrganizationId) : ADSessionSettings.FromRootOrgScopeSet();

            return(DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.IgnoreInvalid, sessionSettings, 31, "GetAdRecipientSession", "f:\\15.00.1497\\sources\\dev\\MailboxAssistants\\src\\assistants\\MailboxProcessor\\MailboxProcessorHelpers\\ADHelper.cs"));
        }
Example #9
0
        // Token: 0x060003E6 RID: 998 RVA: 0x00016BE8 File Offset: 0x00014DE8
        internal static IRecipientSession GetRecipientSessionFromExternalDirectoryOrganizationId(LatencyTracker latencyTracker, Guid externalOrgId, RequestDetailsLogger logger)
        {
            if (latencyTracker == null)
            {
                throw new ArgumentNullException("latencyTracker");
            }
            if (externalOrgId == Guid.Empty)
            {
                throw new ArgumentNullException("latencyTracker");
            }
            ADSessionSettings sessionSettings = null;

            if (Utilities.IsPartnerHostedOnly || GlobalConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).WindowsLiveID.Enabled)
            {
                try
                {
                    sessionSettings = DirectoryHelper.CreateADSessionSettingsWithDiagnostics(() => ADSessionSettings.FromExternalDirectoryOrganizationId(externalOrgId), logger, latencyTracker, false);
                    goto IL_8F;
                }
                catch (CannotResolveExternalDirectoryOrganizationIdException ex)
                {
                    throw new HttpProxyException(HttpStatusCode.NotFound, 3009, ex.Message, ex);
                }
            }
            sessionSettings = ADSessionSettings.FromRootOrgScopeSet();
IL_8F:
            return(DirectoryHelper.CreateSession(sessionSettings));
        }
 private static ITenantConfigurationSession GetTenantSession(Guid tenantId)
 {
     return(DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.FullyConsistent, ADSessionSettings.FromExternalDirectoryOrganizationId(tenantId), 420, "GetTenantSession", "f:\\15.00.1497\\sources\\dev\\Hygiene\\src\\Data\\Directory\\UnifiedPolicy\\UnifiedPolicySession.cs"));
 }
Example #11
0
        protected override void InternalValidate()
        {
            Exception innerException;

            if (!NewMSOFullSyncObjectRequest.IsValidGuid(this.ObjectId.ContextId, out innerException) || !NewMSOFullSyncObjectRequest.IsValidGuid(this.ObjectId.ObjectId, out innerException))
            {
                base.WriteError(new LocalizedException(DirectoryStrings.ExArgumentException("ObjectId", this.ObjectId), innerException), ExchangeErrorCategory.Client, null);
            }
            Guid externalDirectoryOrganizationId = new Guid(this.ObjectId.ContextId);
            ITenantConfigurationSession tenantConfigurationSession = null;

            try
            {
                tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromExternalDirectoryOrganizationId(externalDirectoryOrganizationId), 134, "InternalValidate", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\ForwardSync\\NewMSOFullSyncObjectRequest.cs");
            }
            catch (CannotResolveExternalDirectoryOrganizationIdException)
            {
            }
            if (tenantConfigurationSession != null)
            {
                ExchangeConfigurationUnit exchangeConfigurationUnitByExternalId = tenantConfigurationSession.GetExchangeConfigurationUnitByExternalId(this.ObjectId.ContextId);
                if (exchangeConfigurationUnitByExternalId != null && !StringComparer.OrdinalIgnoreCase.Equals(exchangeConfigurationUnitByExternalId.DirSyncServiceInstance, this.ServiceInstanceId.InstanceId))
                {
                    base.WriteError(new ServiceInstanceNotMatchException(this.ObjectId.ToString(), this.ServiceInstanceId.InstanceId, exchangeConfigurationUnitByExternalId.DirSyncServiceInstance), ExchangeErrorCategory.Client, this.ObjectId);
                }
            }
            base.InternalValidate();
        }
Example #12
0
        internal static IRecipientSession GetRecipientSessionFromExternalDirectoryOrganizationId(LatencyTracker latencyTracker, Guid externalOrgId)
        {
            if (latencyTracker == null)
            {
                throw new ArgumentNullException("latencyTracker");
            }
            if (externalOrgId == Guid.Empty)
            {
                throw new ArgumentNullException("latencyTracker");
            }
            ADSessionSettings sessionSettings = null;

            if (!Utilities.IsPartnerHostedOnly)
            {
                if (!VariantConfiguration.InvariantNoFlightingSnapshot.Global.WindowsLiveID.Enabled)
                {
                    goto IL_A4;
                }
            }
            try
            {
                sessionSettings = DirectoryHelper.ExecuteFunctionAndUpdateMovingAveragePerformanceCounter <ADSessionSettings>(PerfCounters.HttpProxyCountersInstance.MovingAverageTenantLookupLatency, () => DirectoryHelper.InvokeGls <ADSessionSettings>(latencyTracker, () => ADSessionSettings.FromExternalDirectoryOrganizationId(externalOrgId)));
                goto IL_AA;
            }
            catch (CannotResolveExternalDirectoryOrganizationIdException ex)
            {
                throw new HttpProxyException(HttpStatusCode.NotFound, HttpProxySubErrorCode.DomainNotFound, ex.Message, ex);
            }
IL_A4:
            sessionSettings = ADSessionSettings.FromRootOrgScopeSet();
IL_AA:
            return(DirectoryHelper.CreateSession(sessionSettings));
        }
Example #13
0
        internal static IRecipientSession GetRecipientSession(IConfigurationSession configurationSession)
        {
            OrganizationId organizationId = configurationSession.GetOrgContainer().OrganizationId;

            return(DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromExternalDirectoryOrganizationId(new Guid(organizationId.ToExternalDirectoryOrganizationId())), 803, "GetRecipientSession", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\transport\\UnifiedPolicy\\Utils.cs"));
        }