// Token: 0x060019B0 RID: 6576 RVA: 0x0005AE54 File Offset: 0x00059054
        protected void LogException(Exception ex, string userSipUri, string description)
        {
            if (!string.IsNullOrEmpty(userSipUri))
            {
                AutodiscoverCache.IncrementFailureCount(userSipUri);
                base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.CacheOperation, AutodiscoverCacheOperation.IncrementFailureCounter.ToString());
            }
            StringBuilder stringBuilder = new StringBuilder(description);

            if (ex != null)
            {
                if (ex is HttpOperationException)
                {
                    HttpOperationException ex2 = ex as HttpOperationException;
                    if (ex2.HttpResponse != null)
                    {
                        base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.ResponseHeaders, ex2.HttpResponse.GetResponseHeadersAsString());
                        base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.ResponseBody, ex2.HttpResponse.GetResponseBodyAsString());
                    }
                    stringBuilder.Append(((HttpOperationException)ex).ToLogString());
                }
                else if (ex is AggregateException)
                {
                    stringBuilder.Append(((AggregateException)ex).ToLogString());
                }
                else
                {
                    stringBuilder.Append(UcwaConfigurationUtilities.BuildFailureLogString(ex));
                }
            }
            this.LogAndTraceError(stringBuilder.ToString());
        }
        // Token: 0x060019B2 RID: 6578 RVA: 0x0005AF54 File Offset: 0x00059154
        protected bool HandleCreateOnlineMeetingTaskException(Exception ex)
        {
            HttpOperationException ex2 = ex as HttpOperationException;

            if (ex2 != null)
            {
                this.LogException(ex2, "An HttpOperationException occurred while attempting to create online meeting:");
                if (ex2.ErrorInformation == null)
                {
                    AutodiscoverCache.IncrementFailureCount(this.sipUri);
                    base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.CacheOperation, AutodiscoverCacheOperation.IncrementFailureCounter.ToString());
                }
                else
                {
                    ErrorCode code = ex2.ErrorInformation.Code;
                    if (code != ErrorCode.Forbidden)
                    {
                        if (code != ErrorCode.BadGateway)
                        {
                            AutodiscoverCache.IncrementFailureCount(this.sipUri);
                            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.CacheOperation, AutodiscoverCacheOperation.IncrementFailureCounter.ToString());
                        }
                        else
                        {
                            AutodiscoverCache.InvalidateUser(this.sipUri);
                            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.CacheOperation, AutodiscoverCacheOperation.InvalidateUser.ToString());
                        }
                    }
                    else
                    {
                        AutodiscoverCache.InvalidateDomain(OnlineMeetingHelper.GetSipDomain(this.sipUri));
                        base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.CacheOperation, AutodiscoverCacheOperation.InvalidateDomain.ToString());
                    }
                }
                return(true);
            }
            if (ex is OperationFailureException)
            {
                this.LogException(ex, this.sipUri, "A network error occured while attempting to create online meeting:");
                return(true);
            }
            if (ex is OnlineMeetingSchedulerException)
            {
                this.LogException(ex, this.sipUri, "Unable to create an online meeting:");
                return(true);
            }
            this.LogException(ex, this.sipUri, "An unknown exception occurred while creating an online meeting:");
            return(false);
        }
Ejemplo n.º 3
0
        public static UcwaUserConfiguration GetUcwaUserConfiguration(string sipUri, CallContext callContext)
        {
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsTaskCompleted, bool.FalseString);
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsUcwaSupported, bool.FalseString);
            UcwaUserConfiguration ucwaUserConfiguration = new UcwaUserConfiguration();

            ucwaUserConfiguration.SipUri = sipUri;
            if (string.IsNullOrEmpty(sipUri))
            {
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsTaskCompleted, bool.TrueString);
                throw new OwaInvalidRequestException("No sipUri specified");
            }
            UserContext userContext = UserContextManager.GetUserContext(callContext.HttpContext, callContext.EffectiveCaller, true);

            if (string.Compare(userContext.SipUri, sipUri, StringComparison.OrdinalIgnoreCase) != 0)
            {
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.ManagerSipUri, ExtensibleLogger.FormatPIIValue(sipUri));
            }
            if (userContext.ExchangePrincipal.MailboxInfo.OrganizationId != null && userContext.ExchangePrincipal.MailboxInfo.OrganizationId.OrganizationalUnit != null)
            {
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.Organization, userContext.ExchangePrincipal.MailboxInfo.OrganizationId.OrganizationalUnit.Name);
            }
            OAuthCredentials oauthCredential;

            try
            {
                oauthCredential = UcwaConfigurationUtilities.GetOAuthCredential(sipUri);
                oauthCredential.ClientRequestId = new Guid?(Guid.NewGuid());
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.OAuthCorrelationId, oauthCredential.ClientRequestId.Value.ToString());
            }
            catch (OwaException ex)
            {
                string text = UcwaConfigurationUtilities.BuildFailureLogString(ex);
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.Exceptions, text);
                ExTraceGlobals.OnlineMeetingTracer.TraceError <string>(0L, "[UcwaConfigurationUtilities.GetUcwaUserConfiguration] An error occurred while obtaining OAuth credential; Exception: {0}", text);
                ucwaUserConfiguration.DiagnosticInfo = text;
                return(ucwaUserConfiguration);
            }
            AutodiscoverResult ucwaDiscoveryUrl = AutodiscoverWorker.GetUcwaDiscoveryUrl(sipUri, oauthCredential);

            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.AuthenticatedLyncAutodiscoverServer, ucwaDiscoveryUrl.AuthenticatedLyncAutodiscoverServer);
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsAuthdServerFromCache, ucwaDiscoveryUrl.IsAuthdServerFromCache ? bool.TrueString : bool.FalseString);
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsUcwaUrlFromCache, ucwaDiscoveryUrl.IsUcwaUrlFromCache ? bool.TrueString : bool.FalseString);
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.UnauthenticatedRedirectHops, string.Join(";", ucwaDiscoveryUrl.UnauthenticatedRedirects));
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.AuthenticatedRedirectHops, string.Join(";", ucwaDiscoveryUrl.AuthenticatedRedirects));
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.WorkerExceptions, ucwaDiscoveryUrl.BuildFailureString());
            if (!ucwaDiscoveryUrl.IsOnlineMeetingEnabled)
            {
                ExTraceGlobals.OnlineMeetingTracer.TraceInformation(0, 0L, "[UcwaConfigurationUtilities.GetUcwaUserConfiguration] Online meetings are not enabled in this topology");
                ucwaUserConfiguration.DiagnosticInfo = "Online meetings not enabled on the server";
                return(ucwaUserConfiguration);
            }
            if (ucwaDiscoveryUrl.HasError)
            {
                Exception     exception     = ucwaDiscoveryUrl.Error.Exception;
                StringBuilder stringBuilder = new StringBuilder(ucwaDiscoveryUrl.Error.FailureStep.ToString() + "_");
                stringBuilder.Append(UcwaConfigurationUtilities.BuildFailureLogString(exception));
                stringBuilder.Append(ucwaDiscoveryUrl.Error.ResponseFailureReason ?? string.Empty);
                string text2 = stringBuilder.ToString();
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.Exceptions, text2);
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.RequestHeaders, ucwaDiscoveryUrl.Error.RequestHeaders);
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.ResponseHeaders, ucwaDiscoveryUrl.Error.ResponseHeaders);
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.ResponseBody, ucwaDiscoveryUrl.Error.ResponseBody);
                if (ucwaDiscoveryUrl.IsAuthdServerFromCache)
                {
                    AutodiscoverCache.InvalidateDomain(OnlineMeetingHelper.GetSipDomain(sipUri));
                    callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.CacheOperation, AutodiscoverCacheOperation.InvalidateDomain.ToString());
                }
                ExTraceGlobals.OnlineMeetingTracer.TraceError <string>(0L, "[UcwaConfigurationUtilities.GetUcwaUserConfiguration] An error occured while fetching UCWA configuration; Exception: {0}", text2);
                ucwaUserConfiguration.DiagnosticInfo = text2;
                return(ucwaUserConfiguration);
            }
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.ResponseBody, ucwaDiscoveryUrl.ResponseBody);
            ucwaUserConfiguration.IsUcwaSupported = ucwaDiscoveryUrl.IsUcwaSupported;
            ucwaUserConfiguration.UcwaUrl         = ucwaDiscoveryUrl.UcwaDiscoveryUrl;
            callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsTaskCompleted, bool.TrueString);
            if (ucwaUserConfiguration.IsUcwaSupported)
            {
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.IsUcwaSupported, bool.TrueString);
                callContext.ProtocolLog.Set(GetUcwaUserConfigurationMetaData.UcwaUrl, ucwaUserConfiguration.UcwaUrl);
            }
            return(ucwaUserConfiguration);
        }