Пример #1
0
        /// <summary>
        /// rewrite CDN urls from  /path/to/file!cf!a=1!b=2.ext to original form /path/to/file.ext?a=1&b=2
        /// </summary>
        /// <param name="args"></param>
        public override void Process(PreprocessRequestArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            // rehydrate original url
            string fullPath = Sitecore.Context.RawUrl;
            var url = new UrlString(fullPath);

            // if this item is a minifiable css or js
            // rewrite for ~/minify handler
            if (CDNSettings.Enabled &&
                CDNSettings.MinifyEnabled &&
                url["min"] == "1" &&
                !url.Path.StartsWith(Settings.Media.DefaultMediaPrefix) &&
                (url.Path.EndsWith(".css") || url.Path.EndsWith(".js")))
            {
                args.Context.Items["MinifyPath"] = fullPath;   // set this for the Minifier handler
                args.Context.RewritePath("/~/minify" + url.Path, string.Empty, url.Query);  // rewrite with ~/minify to trigger custom handler
            }

            // NOTE: DOREL CHANGE: Commented to make WCF services (*.svc) workable
            //            else
            //            {
            //                args.Context.RewritePath(url.Path, string.Empty, url.Query); // rewrite proper url
            //            }
        }
 public override void Process(PreprocessRequestArgs args)
 {
     if (!_sitesFilter.Contains(Sitecore.Context.Site.Name))
     {
         SiteProcess(args);
     }
 }
 public override void Process(PreprocessRequestArgs args)
 {
     if (!_sitesFilter.Contains(Sitecore.Context.Site.Name))
     {
         SiteProcess(args);
     }
 }
Пример #4
0
 public override void Process(PreprocessRequestArgs args)
 {
   if (args.Context.Request.RawUrl.Contains("CaptchaImage.axd"))
   {
     var handler = (new MSCaptcha.CaptchaImageHandler()) as IHttpHandler;
     handler.ProcessRequest(args.Context);
   }
 }
Пример #5
0
 public override void Process(PreprocessRequestArgs args)
 {
     if (args.Context.Request.RawUrl.Contains("CaptchaImage.axd"))
     {
         var handler = (new MSCaptcha.CaptchaImageHandler()) as IHttpHandler;
         handler.ProcessRequest(args.Context);
     }
 }
Пример #6
0
 /// <summary>
 ///     Processes the specified arguments.
 /// </summary>
 /// <param name="args">The arguments.</param>
 public override void Process(PreprocessRequestArgs args)
 {
     ExecuteWithoutException(() =>
                             {;
                              if (args?.Context?.Request.Path == null ||
                                  !args.Context.Request.Path.StartsWith(ModuleInfo.RoutePrefix, false, CultureInfo.InvariantCulture))
                              {
                                  return;
                              }
                              ExecuteRewrite(new HttpContextWrapper(args.Context), ModuleInfo.RoutePrefix.TrimEnd('/')); });
 }
Пример #7
0
        /// <summary>Processes the specified arguments.</summary>
        /// <param name="args">The arguments.</param>
        public override void Process(PreprocessRequestArgs args)
        {
            Assert.ArgumentNotNull((object)args, "args");

            Language language = ExtractLanguage(args.Context.Request);

            if (language == (Language)null)
            {
                //if url doesn't contain language name, we will set the default language
                language = Sitecore.Globalization.Language.Parse("en");
            }
            Context.Language = language;
            Context.Data.FilePathLanguage = language;
        }
Пример #8
0
        public override void Process(PreprocessRequestArgs args)
        {
            var context = args.HttpContext;

            if (context.Request.HttpMethod != HttpMethod.Get.Method && context.Request.HttpMethod != HttpMethod.Head.Method)
            {
                return;
            }

            if (!(context.Request.Path.Equals(_livenessPath, StringComparison.OrdinalIgnoreCase) ||
                  context.Request.Path.Equals(_readinessPath, StringComparison.OrdinalIgnoreCase)))
            {
                return;
            }

            args.AbortPipeline();

            context.Items["SitecoreOn"] = false;

            var pipelineArgs = new HealthCheckPipelineArgs();

            if (context.Request.Path.Equals(_livenessPath, StringComparison.OrdinalIgnoreCase))
            {
                CorePipeline.Run(LivenessHealthCheckPipelineName, pipelineArgs, true);
            }
            else if (context.Request.Path.Equals(_readinessPath, StringComparison.OrdinalIgnoreCase))
            {
                CorePipeline.Run(ReadinessHealthCheckPipelineName, pipelineArgs, true);
            }

            context.Response.ContentType = "text/plain";

            foreach (var message in pipelineArgs.GetAllMessages())
            {
                context.Response.Write(message + Environment.NewLine);
            }

            if (pipelineArgs.IsSuccess())
            {
                context.Response.StatusCode = 200;
            }
            else
            {
                context.Response.TrySkipIisCustomErrors = true;
                context.Response.StatusCode             = 503;
            }

            context.ApplicationInstance.CompleteRequest();
        }
Пример #9
0
 public override void Process(PreprocessRequestArgs args)
 {
     try
     {
         new SuppressFormValidation().Process(args);
     }
     catch (HttpRequestValidationException)
     {
         // NOTE [ILs] Only URLs with "login" are considered safe for special character input. (Required for WsFed)
         string rawUrl = args?.Context.Request.RawUrl ?? string.Empty;
         if (!rawUrl.Contains("login"))
         {
             throw;
         }
     }
 }
Пример #10
0
        /// <summary>
        /// Adds a session variable when using AMP and removes the token when not
        /// </summary>
        /// <param name="args">the PreprocessRequestArgs</param>
        public override void Process(PreprocessRequestArgs args)
        {
            Assert.ArgumentNotNull((object)args, nameof(args));

            // remove initial check (expired = true)
            args.HttpContext.SetAmpCookie(true);

            // check if the url is requested with the /amp postfix
            if (args.HttpContext.UseAmp())
            {
                // set cookie for future usage
                args.HttpContext.SetAmpCookie();
                //  rewrite url to get original item
                args.HttpContext.RewriteUrl();
            }
        }
Пример #11
0
 public override void Process(PreprocessRequestArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     try
     {
         new SuppressFormValidation().Process(args);
     }
     catch (HttpRequestValidationException)
     {
         string rawUrl = args.Context.Request.RawUrl;
         if (!rawUrl.Contains("sample item") && !rawUrl.Contains("secure") && !rawUrl.Contains("login"))
         {
             throw;
         }
     }
 }
 public override void Process(PreprocessRequestArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     try
     {
         new SuppressFormValidation().Process(args);
     }
     catch (HttpRequestValidationException)
     {
         string rawUrl = args.Context.Request.RawUrl;
         if (!rawUrl.StartsWith("/sitecore/shell/", System.StringComparison.InvariantCultureIgnoreCase) && !rawUrl.StartsWith("/sitecore/admin/", System.StringComparison.InvariantCultureIgnoreCase) && !rawUrl.StartsWith("/-/speak/request/", System.StringComparison.InvariantCultureIgnoreCase))
         {
             throw;
         }
     }
 }
Пример #13
0
        public override void Process(PreprocessRequestArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            if (!Settings.Languages.AlwaysStripLanguage)
            {
                return;
            }
            Language language = ExtractLanguage(args.Context.Request);

            if (language == null)
            {
                return;
            }
            Context.Language = language;
            Context.Data.FilePathLanguage = language;
            RewriteUrl(args.Context, language);
            Tracer.Info(string.Format("Language changed to \"{0}\" as request url contains language embedded in the file path.", language.Name));
        }
Пример #14
0
        /// <summary>
        /// rewrite CDN urls from  /path/to/file!cf!a=1!b=2.ext to original form /path/to/file.ext?a=1&b=2
        /// </summary>
        /// <param name="args"></param>
        public override void Process(PreprocessRequestArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            // rehydrate original url
            string    fullPath = Sitecore.Context.RawUrl;
            UrlString url      = new UrlString(fullPath);

            // if this item is a minifiable css or js
            // rewrite for ~/minify handler
            if (CDNSettings.Enabled &&
                CDNSettings.MinifyEnabled &&
                url["min"] == "1" &&
                !url.Path.StartsWith(Settings.Media.DefaultMediaPrefix) &&
                (url.Path.EndsWith(".css") || url.Path.EndsWith(".js")))
            {
                args.Context.Items["MinifyPath"] = fullPath;                     // set this for the Minifier handler
                args.Context.RewritePath("/~/minify" + url.Path, "", url.Query); // rewrite with ~/minify to trigger custom handler
            }
            else
            {
                args.Context.RewritePath(url.Path, "", url.Query); // rewrite proper url
            }
        }
Пример #15
0
        public override void Process(PreprocessRequestArgs args)
        {
            var fiftyOneDegreesService = new FiftyOneDegreesServiceFactory().Create(new HttpContextWrapper(args.Context));

            fiftyOneDegreesService.SetBrowserCapabilities();
        }
Пример #16
0
 public override void Process(PreprocessRequestArgs args)
 {
     Sitecore.Diagnostics.Assert.ArgumentNotNull(args, "args");
     args.AbortPipeline();
     return;
 }
Пример #17
0
        public override void Process(PreprocessRequestArgs arguments)
        {
            Assert.ArgumentNotNull(arguments, "arguments");
            try
            {
                var url       = TypeResolver.Resolve <IObsoletor>().GetRequestUrl(arguments);
                var localPath = url.LocalPath;

                if (localPath.StartsWith("/-/script/v1", StringComparison.OrdinalIgnoreCase))
                {
                    var sourceArray = url.LocalPath.TrimStart('/').Split('/');
                    if (sourceArray.Length < 3)
                    {
                        return;
                    }
                    var length           = sourceArray.Length - 3;
                    var destinationArray = new string[length];
                    Array.Copy(sourceArray, 3, destinationArray, 0, length);
                    var scriptPath = $"/{string.Join("/", destinationArray)}";
                    var query      = url.Query.TrimStart('?');
                    query += $"{(string.IsNullOrEmpty(query) ? "?" : "&")}script={scriptPath}&apiVersion=1";
                    WebUtil.RewriteUrl(
                        new UrlString
                    {
                        Path  = "/sitecore modules/PowerShell/Services/RemoteScriptCall.ashx",
                        Query = query
                    }.ToString());
                }
                if (localPath.StartsWith("/-/script/v2", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/media", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/file", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/handle", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/script", StringComparison.OrdinalIgnoreCase)
                    )
                {
                    var sourceArray = url.LocalPath.TrimStart('/').Split(new [] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                    if (sourceArray.Length < 3)
                    {
                        return;
                    }
                    if (sourceArray.Length == 3)
                    {
                        Array.Resize(ref sourceArray, 4);
                        sourceArray[3] = "";
                    }

                    var apiVersion       = sourceArray[2].Is("v2") ? "2": sourceArray[2];
                    var length           = sourceArray.Length - 4;
                    var destinationArray = new string[length];
                    var origin           = sourceArray[3].ToLowerInvariant();
                    var database         = apiVersion.Is("file") || apiVersion.Is("handle") ? string.Empty : origin;
                    Array.Copy(sourceArray, 4, destinationArray, 0, length);
                    var scriptPath = $"/{string.Join("/", destinationArray)}";
                    var query      = url.Query.TrimStart('?');
                    query += $"{(string.IsNullOrEmpty(query) ? "" : "&")}script={scriptPath}&sc_database={database}&scriptDb={origin}&apiVersion={apiVersion}";
                    WebUtil.RewriteUrl(
                        new UrlString
                    {
                        Path  = "/sitecore modules/PowerShell/Services/RemoteScriptCall.ashx",
                        Query = query
                    }.ToString());
                }
            }
            catch (Exception exception)
            {
                PowerShellLog.Error("Error during the SPE API call", exception);
            }
        }
Пример #18
0
 public override void Process(PreprocessRequestArgs arguments)
 {
     Assert.ArgumentNotNull(arguments, "arguments");
     try
     {
         Assert.ArgumentNotNull(arguments.Context, "context");
         var url = arguments.Context.Request.Url;
         var localPath = url.LocalPath;
         if (localPath.StartsWith("/Console/", StringComparison.OrdinalIgnoreCase))
         {
             // this bit is for compatibility of solutions integrating with SPE 2.x services in mind
             WebUtil.RewriteUrl(
                 new UrlString
                 {
                     Path = localPath.ToLowerInvariant().Replace("/console/", "/sitecore modules/PowerShell/"),
                     Query = url.Query
                 }.ToString());
         }
         if (localPath.StartsWith("/-/script/v1", StringComparison.OrdinalIgnoreCase))
         {
             var sourceArray = url.LocalPath.TrimStart('/').Split('/');
             if (sourceArray.Length < 3)
             {
                 return;
             }
             var length = sourceArray.Length - 3;
             var destinationArray = new string[length];
             Array.Copy(sourceArray, 3, destinationArray, 0, length);
             var scriptPath = string.Format("/{0}", string.Join("/", destinationArray));
             var query = url.Query.TrimStart('?');
             query += string.Format("{0}script={1}&apiVersion=1", string.IsNullOrEmpty(query) ? "?" : "&",
                 scriptPath);
             WebUtil.RewriteUrl(
                 new UrlString
                 {
                     Path = "/sitecore modules/PowerShell/Services/RemoteScriptCall.ashx",
                     Query = query
                 }.ToString());
         }
         if (localPath.StartsWith("/-/script/v2", StringComparison.OrdinalIgnoreCase) ||
             localPath.StartsWith("/-/script/media", StringComparison.OrdinalIgnoreCase) ||
             localPath.StartsWith("/-/script/file", StringComparison.OrdinalIgnoreCase)
             )
         {
             var sourceArray = url.LocalPath.TrimStart('/').Split('/');
             if (sourceArray.Length < 4)
             {
                 return;
             }
             string apiVersion = sourceArray[2].Is("v2") ? "2": sourceArray[2];
             var length = sourceArray.Length - 4;
             var destinationArray = new string[length];
             var origin = sourceArray[3].ToLowerInvariant();
             string database = apiVersion.Is("file") ? string.Empty : origin;
             Array.Copy(sourceArray, 4, destinationArray, 0, length);
             var scriptPath = string.Format("/{0}", string.Join("/", destinationArray));
             var query = url.Query.TrimStart('?');
             query += string.Format("{0}script={1}&sc_database={2}&scriptDb={3}&apiVersion={4}",
                 string.IsNullOrEmpty(query) ? "" : "&", scriptPath, database, origin, apiVersion);
             WebUtil.RewriteUrl(
                 new UrlString
                 {
                     Path = "/sitecore modules/PowerShell/Services/RemoteScriptCall.ashx",
                     Query = query
                 }.ToString());
         }
     }
     catch (Exception exception)
     {
         Log.Error("Error during the SPE API call", exception);
     }
 }
 public abstract void SiteProcess(PreprocessRequestArgs args);
Пример #20
0
        public override void Process(PreprocessRequestArgs arguments)
        {
            Assert.ArgumentNotNull(arguments, "arguments");
            try
            {
                Assert.ArgumentNotNull(arguments.Context, "context");
                var url       = arguments.Context.Request.Url;
                var localPath = url.LocalPath;

                //Compatibility with 2.x services location now removed - uncomment the following to restore
                // Issue #511

                /*
                 * if (localPath.StartsWith("/Console/", StringComparison.OrdinalIgnoreCase))
                 * {
                 *    // this bit is for compatibility of solutions integrating with SPE 2.x services in mind
                 *    WebUtil.RewriteUrl(
                 *        new UrlString
                 *        {
                 *            Path = localPath.ToLowerInvariant().Replace("/console/", "/sitecore modules/PowerShell/"),
                 *            Query = url.Query
                 *        }.ToString());
                 * }
                 */
                if (localPath.StartsWith("/-/script/v1", StringComparison.OrdinalIgnoreCase))
                {
                    var sourceArray = url.LocalPath.TrimStart('/').Split('/');
                    if (sourceArray.Length < 3)
                    {
                        return;
                    }
                    var length           = sourceArray.Length - 3;
                    var destinationArray = new string[length];
                    Array.Copy(sourceArray, 3, destinationArray, 0, length);
                    var scriptPath = string.Format("/{0}", string.Join("/", destinationArray));
                    var query      = url.Query.TrimStart('?');
                    query += string.Format("{0}script={1}&apiVersion=1", string.IsNullOrEmpty(query) ? "?" : "&",
                                           scriptPath);
                    WebUtil.RewriteUrl(
                        new UrlString
                    {
                        Path  = "/sitecore modules/PowerShell/Services/RemoteScriptCall.ashx",
                        Query = query
                    }.ToString());
                }
                if (localPath.StartsWith("/-/script/v2", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/media", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/file", StringComparison.OrdinalIgnoreCase) ||
                    localPath.StartsWith("/-/script/handle", StringComparison.OrdinalIgnoreCase)
                    )
                {
                    var sourceArray = url.LocalPath.TrimStart('/').Split('/');
                    if (sourceArray.Length < 4)
                    {
                        return;
                    }
                    string apiVersion       = sourceArray[2].Is("v2") ? "2": sourceArray[2];
                    var    length           = sourceArray.Length - 4;
                    var    destinationArray = new string[length];
                    var    origin           = sourceArray[3].ToLowerInvariant();
                    string database         = apiVersion.Is("file") || apiVersion.Is("handle") ? string.Empty : origin;
                    Array.Copy(sourceArray, 4, destinationArray, 0, length);
                    var scriptPath = string.Format("/{0}", string.Join("/", destinationArray));
                    var query      = url.Query.TrimStart('?');
                    query += string.Format("{0}script={1}&sc_database={2}&scriptDb={3}&apiVersion={4}",
                                           string.IsNullOrEmpty(query) ? "" : "&", scriptPath, database, origin, apiVersion);
                    WebUtil.RewriteUrl(
                        new UrlString
                    {
                        Path  = "/sitecore modules/PowerShell/Services/RemoteScriptCall.ashx",
                        Query = query
                    }.ToString());
                }
            }
            catch (Exception exception)
            {
                PowerShellLog.Error("Error during the SPE API call", exception);
            }
        }
Пример #21
0
 public Uri GetRequestUrl(PreprocessRequestArgs args)
 {
     return(args.HttpContext.Request.Url);
 }
 public abstract void SiteProcess(PreprocessRequestArgs args);