public bool TrySwitchOwaHostNameAndReturnPermanentRedirect(HttpContext context)
        {
            HttpRequest  request    = context.Request;
            Uri          uri        = request.GetRequestUrlEvenIfProxied();
            HttpResponse response   = context.Response;
            HttpCookie   httpCookie = request.Cookies.Get("HostSwitch");
            bool         flag       = httpCookie != null && httpCookie.Value == "1";
            string       host       = uri.Host;
            string       host2      = null;

            if (flag && request.RequestType == "GET" && this.IsDeprecatedHostName(host, out host2) && this.IsOwaStartPageRequest(uri) && !this.HasNonRedirectableQueryParams(request.QueryString.AllKeys))
            {
                bool flag2 = OfflineClientRequestUtilities.IsRequestForAppCachedVersion(context);
                bool flag3 = OfflineClientRequestUtilities.IsRequestFromMOWAClient(request, request.UserAgent);
                if (!flag2 && !flag3)
                {
                    uri = new UriBuilder(uri)
                    {
                        Host = host2
                    }.Uri;
                    this.RedirectPermanent(context, uri);
                    return(true);
                }
            }
            return(false);
        }
        private static bool RedirectBecauseClientForgotTrailingSlashOnRoot(HttpApplication httpApplication, HttpContext httpContext, Uri originalUri)
        {
            bool        result  = false;
            HttpRequest request = httpContext.Request;

            if (request.HttpMethod == "GET")
            {
                string absolutePath  = originalUri.AbsolutePath;
                string rootWithSlash = RequestDispatcher.GetRootWithSlash();
                string value         = rootWithSlash.TrimEnd(new char[]
                {
                    '/'
                });
                if (absolutePath.Equals(value, StringComparison.OrdinalIgnoreCase))
                {
                    if (string.IsNullOrEmpty(originalUri.Query) && OfflineClientRequestUtilities.IsRequestForAppCachedVersion(httpContext))
                    {
                        RequestDispatcher.SendJavascriptRedirectTo(httpApplication, httpContext.Response, rootWithSlash);
                        result = true;
                    }
                    else
                    {
                        RequestDispatcher.Send301RedirectTo(httpContext.Response, rootWithSlash + originalUri.Query);
                        result = true;
                    }
                }
            }
            return(result);
        }
Example #3
0
        protected virtual bool GetIsClientAppCacheEnabled(HttpContext context)
        {
            bool flag = false;
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(context.Request.Url.Query);

            foreach (string text in nameValueCollection.AllKeys)
            {
                string text2;
                if (text == null || !DefaultPageBase.ParamsInAppCache.TryGetValue(text.ToLowerInvariant(), out text2) || (text2 != null && text2 != context.Request.Params[text]))
                {
                    flag = true;
                    break;
                }
            }
            return((!flag && OfflineClientRequestUtilities.IsRequestForAppCachedVersion(context)) || DefaultPageBase.IsPalEnabled(context, this.UserAgent.RawString));
        }
Example #4
0
        private void OnBeginRequestInternal(HttpApplication httpApplication)
        {
            HttpContext context = httpApplication.Context;
            HttpRequest request = context.Request;

            if (context.Request.IsSecureConnection)
            {
                string       text = request.Url.AbsolutePath ?? string.Empty;
                string       requestPathAndQuery = request.Url.PathAndQuery ?? string.Empty;
                string       text2    = request.Url.AbsoluteUri ?? string.Empty;
                HttpResponse response = context.Response;
                if (OwaJavascriptRedirectModule.gallatinSplashPageEnabled && OwaJavascriptRedirectModule.gallatinSplashPageRequiredForUrl.Equals(text2, StringComparison.OrdinalIgnoreCase))
                {
                    context.Server.TransferRequest("/owa/auth/outlookcn.aspx");
                    return;
                }
                if (string.IsNullOrEmpty(text) || text == "/")
                {
                    if (OfflineClientRequestUtilities.IsRequestForAppCachedVersion(context))
                    {
                        string arg = Uri.EscapeUriString(Uri.UnescapeDataString("/owa/" + context.Request.Url.Query));
                        response.StatusCode  = 200;
                        response.ContentType = "text/html";
                        response.Write(string.Format("<!DOCTYPE html><html><head><script type=\"text/javascript\">window.location.replace(\"{0}\" + window.location.hash);</script></head><body></body></html>", arg));
                        response.AppendToLog("OwaJavascriptRedirectUri=/owa/");
                        httpApplication.CompleteRequest();
                        return;
                    }
                    HttpRedirectCommon.RedirectRequestToNewUri(httpApplication, HttpRedirectCommon.HttpRedirectType.Permanent, new UriBuilder(text2)
                    {
                        Path = "/owa/"
                    }.Uri, "Owa301RedirectUri=");
                    return;
                }
                else
                {
                    string empty = string.Empty;
                    if (OwaJavascriptRedirectModule.TryGetOwa302PathAndQuery(text, requestPathAndQuery, out empty))
                    {
                        response.AppendToLog("Owa302RedirectUri=" + empty);
                        response.Redirect(empty);
                    }
                }
            }
        }
        private static bool RedirectBecauseIE10RequiresReloadFromAppcache(HttpApplication httpApplication, HttpContext httpContext, Uri originalUri)
        {
            bool        result  = false;
            HttpRequest request = httpContext.Request;

            if (request.HttpMethod == "GET")
            {
                string absolutePath  = originalUri.AbsolutePath;
                string rootWithSlash = RequestDispatcher.GetRootWithSlash();
                if (absolutePath.Equals(rootWithSlash, StringComparison.OrdinalIgnoreCase) && RequestDispatcher.IsBrowserIE10(httpContext) && !OfflineClientRequestUtilities.IsRequestForAppCachedVersion(httpContext) && !DefaultPageBase.IsPalEnabled(httpContext))
                {
                    result = RequestDispatcher.ForceIE10ReloadToUseAppcacheIfNotAlreadyDone(httpApplication, httpContext);
                }
            }
            return(result);
        }