예제 #1
0
        public static void RewriteFederatedDomainInURL(HttpContext httpContext, out string domain)
        {
            domain = string.Empty;
            Uri url = httpContext.Request.Url;

            domain = UrlUtilities.ValidateFederatedDomainInURL(url);
            UrlUtilities.RewriteRealmParameterInURL(httpContext, domain);
        }
예제 #2
0
        public static Uri GetOriginalRequestUrlFromContext(HttpContext httpContext)
        {
            Uri    result = httpContext.Request.Url;
            string text   = httpContext.Request.Headers.Get("X-OWA-OriginalRequestUrl");

            if (!string.IsNullOrEmpty(text))
            {
                Uri uri = UrlUtilities.TryParseUri(HttpUtility.UrlDecode(text));
                if (uri != null)
                {
                    result = uri;
                }
            }
            return(result);
        }
예제 #3
0
 public static void RewriteDomainFromTenantSpecificURL(HttpContext httpContext, string tenantUrl)
 {
     if (!string.IsNullOrEmpty(tenantUrl))
     {
         string text = tenantUrl.Substring(tenantUrl.IndexOf(".") + 1).TrimEnd(new char[]
         {
             '/'
         });
         if (text.IndexOf(".") <= 0)
         {
             text = tenantUrl;
         }
         UrlUtilities.RewriteRealmParameterInURL(httpContext, text);
     }
 }
예제 #4
0
        internal static bool IsSafeUrl(string urlString)
        {
            if (string.IsNullOrEmpty(urlString))
            {
                return(false);
            }
            Uri uri;

            if (null == (uri = UrlUtilities.TryParseUri(urlString)))
            {
                return(false);
            }
            string scheme = uri.Scheme;

            return(!string.IsNullOrEmpty(scheme) && Uri.CheckSchemeName(scheme) && TextConvertersInternalHelpers.IsUrlSchemaSafe(scheme));
        }
예제 #5
0
        public static void RewriteParameterInURL(HttpContext httpContext, string parameter)
        {
            Uri url = httpContext.Request.Url;

            UrlUtilities.SaveOriginalRequestUrlToContext(httpContext, url);
            StringBuilder stringBuilder = new StringBuilder(url.PathAndQuery);

            if (string.IsNullOrEmpty(url.Query))
            {
                stringBuilder.Append("?");
            }
            else
            {
                stringBuilder.Append("&");
            }
            stringBuilder.Append(parameter);
            httpContext.RewritePath(stringBuilder.ToString());
        }
예제 #6
0
        public static void RewriteDomainInVanityDomainURL(HttpContext httpContext)
        {
            Uri url = httpContext.Request.Url;

            if (url.Segments.Length >= 1)
            {
                string text  = url.Segments[0];
                string text2 = text.Substring(text.IndexOf(".") + 1).TrimEnd(new char[]
                {
                    '/'
                });
                if (text2.IndexOf(".") <= 0)
                {
                    text2 = text;
                }
                UrlUtilities.RewriteRealmParameterInURL(httpContext, text2);
            }
        }
예제 #7
0
        public static void RewriteRealmParameterInURL(HttpContext httpContext, string domain)
        {
            Uri url = httpContext.Request.Url;

            UrlUtilities.SaveOriginalRequestUrlToContext(httpContext, url);
            if (!string.IsNullOrEmpty(domain) && SmtpAddress.IsValidDomain(domain))
            {
                StringBuilder stringBuilder = new StringBuilder();
                int           i             = 0;
                while (i < url.Segments.Length)
                {
                    string text = url.Segments[i];
                    if (i != 2 || text.Equals("closewindow.aspx", StringComparison.OrdinalIgnoreCase) || text.Equals("logoff.aspx", StringComparison.OrdinalIgnoreCase))
                    {
                        goto IL_77;
                    }
                    int num = text.IndexOf('@');
                    if (num > 0 && num < text.Length - 2)
                    {
                        goto IL_77;
                    }
IL_7F:
                    i++;
                    continue;
IL_77:
                    stringBuilder.Append(text);
                    goto IL_7F;
                }
                if (string.IsNullOrEmpty(url.Query))
                {
                    stringBuilder.Append("?");
                }
                else
                {
                    stringBuilder.Append(url.Query);
                    stringBuilder.Append("&");
                }
                stringBuilder.Append("realm");
                stringBuilder.Append("=");
                stringBuilder.Append(HttpUtility.UrlEncode(domain));
                httpContext.RewritePath(stringBuilder.ToString());
            }
        }
예제 #8
0
 internal static Uri TryParseUri(string uriString)
 {
     return(UrlUtilities.TryParseUri(uriString, UriKind.Absolute));
 }
예제 #9
0
 public static bool IsRealmRewrittenFromPathToQuery(HttpContext httpContext)
 {
     return(UrlUtilities.IsRealmRewrittenFromPathToQuery(httpContext, UrlUtilities.GetOriginalRequestUrlFromContext(httpContext)));
 }
예제 #10
0
        public static void RewriteParameterInURL(HttpContext httpContext, string name, string value)
        {
            string parameter = string.Format("{0}={1}", name, value);

            UrlUtilities.RewriteParameterInURL(httpContext, parameter);
        }
예제 #11
0
        public static void RewriteFederatedDomainInURL(HttpContext httpContext)
        {
            string empty = string.Empty;

            UrlUtilities.RewriteFederatedDomainInURL(httpContext, out empty);
        }