Пример #1
0
 public FilterResult Filter(IWebRequestData request)
 {
     foreach (var regex in HostRegExs)
     {
         if (Regex.IsMatch(request.Host, regex) ||
             (request.Referer != null && Regex.IsMatch(request.Referer.Host, regex)))
         {
             return(FilterResult.Allow);
         }
     }
     return(FilterResult.Block("This page is blocked by SimpleProxy whitelist filter", HttpStatusCode.Forbidden));
 }
        private static FilterResult FilterRequest(IWebRequestData request, IEnumerable <IWebRequestFilter> requestFilters)
        {
            foreach (var filter in requestFilters)
            {
                var filterName = "Filter";
                try
                {
                    if (!filter.Enabled)
                    {
                        continue;
                    }

                    filterName = filter.Name;
                    if (String.IsNullOrWhiteSpace(filterName))
                    {
                        filterName = filter.GetType().Name;
                    }

                    Trace.TraceInformation("Applying request request filter {0}", filterName);

                    var filterResult = filter.Filter(request);

                    if (filterResult.Action == (filterResult.Action | FilterResultAction.Block))
                    {
                        return(filterResult);
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceError("{0} filter failed: {1}", filterName, ex);
                    var errorMessage = String.Format("SimpleProxy: Error Processing Request: {0} failed", filterName);
                    return(FilterResult.Block(errorMessage, HttpStatusCode.InternalServerError));
                }
            }
            return(FilterResult.Allow);
        }