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); }