/
CustomFilterUrlFilesAndExtensions.cs
52 lines (48 loc) · 1.73 KB
/
CustomFilterUrlFilesAndExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using SitecoreThinker.Feature.SEO.Sitemap;
using Microsoft.Extensions.DependencyInjection;
using Sitecore.DependencyInjection;
using Sitecore.Diagnostics;
using Sitecore.Pipelines.PreprocessRequest;
using Sitecore.XA.Foundation.Abstractions.Configuration;
using Sitecore.XA.Foundation.SitecoreExtensions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
namespace SitecoreThinker.Feature.SEO.Pipelines.PreprocessRequest
{
public class FilterUrlFilesAndExtensions : FilterUrlExtensions
{
public FilterUrlFilesAndExtensions(
string allowed,
string blocked,
string streamFiles,
string doNotStreamFiles)
: base(allowed, blocked, streamFiles, doNotStreamFiles)
{
}
public override void Process(PreprocessRequestArgs args)
{
string requestFilePath = this.GetRequestFilePath();
IEnumerable<string> AllowedFileNames = ServiceLocator.ServiceProvider.GetService<IConfiguration<SitecoreExtensionsConfiguration>>().GetConfiguration().AllowedFileNames;
if (AllowedFileNames.Contains<string>(requestFilePath))
return;
if (SiteMapValidator.IsNestedSiteMap(HttpContext.Current.Request.Url.PathAndQuery)) //check for the nested sitemap files
return;
base.Process(args);
}
protected virtual string GetRequestFilePath()
{
try
{
return Path.GetFileName(HttpContext.Current.Request.FilePath);
}
catch (Exception ex)
{
Log.Error(ex.Message, ex, (object)this);
return string.Empty;
}
}
}
}