Exemple #1
0
        public UriPatternMatchType Match(RequestProperties properties, out UriPattern matchedPattern)
        {
            var        result = UriPatternMatchType.NonMatch;
            UriPattern output = null;

            Parallel.ForEach(this._exceptionPatterns, (p, state) => {
                if (p.Match(properties) == UriPatternMatchType.Exception)
                {
                    state.Stop();
                    output = p;
                    result = UriPatternMatchType.Exception;
                }
            });

            if (result == UriPatternMatchType.Exception)
            {
                matchedPattern = output;
                return(result);
            }

            Parallel.ForEach(this._matchPatterns, (p, state) =>
            {
                if (p.Match(properties) == UriPatternMatchType.Match)
                {
                    state.Stop();
                    output = p;
                    result = UriPatternMatchType.Match;
                }
            });

            matchedPattern = output;

            return(result);
        }
Exemple #2
0
        public UriPatternMatchType Match(RequestProperties properties, out UriPattern matchedPattern)
        {
            var result = UriPatternMatchType.NonMatch;
            UriPattern output = null;
            Parallel.ForEach(this._exceptionPatterns, (p, state) => {
                if (p.Match(properties) == UriPatternMatchType.Exception)
                {
                    state.Stop();
                    output = p;
                    result = UriPatternMatchType.Exception;
                }
            });

            if (result == UriPatternMatchType.Exception)
            {
                matchedPattern = output;
                return result;
            }

            Parallel.ForEach(this._matchPatterns, (p, state) =>
            {
                if (p.Match(properties) == UriPatternMatchType.Match)
                {
                    state.Stop();
                    output = p;
                    result = UriPatternMatchType.Match;
                }
            });

            matchedPattern = output;

            return result;
        }
Exemple #3
0
        /// <summary>
        /// Checks to see if the request matches any of the patterns.
        /// </summary>
        /// <param name="properties">
        /// The request properties.
        /// </param>
        /// <param name="pattern">
        /// The patterns to match.
        /// </param>
        /// <returns>
        /// <c>true</c> if any of the patterns were a match.
        /// </returns>
        public static bool Match(RequestProperties properties, IEnumerable <UriPattern> pattern)
        {
            foreach (var result in pattern.Select(uriPattern => uriPattern.Match(properties)))
            {
                switch (result)
                {
                case UriPatternMatchType.Exception:
                    return(false);

                case UriPatternMatchType.Match:
                    return(true);
                }
            }

            return(false);
        }
Exemple #4
0
        /// <summary>
        /// The fiddler application before response.
        /// </summary>
        /// <param name="session">
        /// The session.
        /// </param>
        private void FiddlerApplicationBeforeResponse(Session session)
        {
            var requestProperties = new RequestProperties(session.fullUrl, session.oRequest.headers["Referer"], session.oRequest.headers["Accept"]);

            var filteredRules = from r in this.ResponseRules where r.Enabled where r.Matches == null || UriPattern.Match(requestProperties, r.Matches) select r;

            (from rule in filteredRules let rule1 = rule where rule.ResponseActions.Any(action => action.Enabled && !action.OnResponse(session, rule1)) select rule).Any();

            if (this.ResponseReceived != null)
            {
                this.ResponseReceived(
                    session, new ResponseSummaryEventArgs {
                    ResponseCode = session.responseCode, FullUrl = session.fullUrl, ResponseCodeText = session.oResponse.headers.HTTPResponseStatus, Referer = (session.oRequest["Referer"].HasValue() ? session.oRequest["Referer"] : "None") + ", Sessions: " + this.SessionCount, Length = session.ResponseBody.LongLength
                });
            }
        }
Exemple #5
0
        /// <summary>
        /// The fiddler application before request.
        /// </summary>
        /// <param name="session">
        /// The session.
        /// </param>
        private void FiddlerApplicationBeforeRequest(Session session)
        {
            Interlocked.Increment(ref this._sessionCount);

            var requestProperties = new RequestProperties(session.fullUrl, session.oRequest.headers["Referer"], session.oRequest.headers["Accept"]);

            if (requestProperties.Uri == null)
            {
                // Malformed URI, let's terminate the request.
                session.oRequest.FailSession(400, "Bad Request (Malformed Uri)", String.Empty);
                return;
            }

            var filteredRules = from r in this.RequestRules where r.Enabled where r.Matches == null || UriPattern.Match(requestProperties, r.Matches) select r;

            foreach (var rule in filteredRules.Where(rule => rule.RequestActions.Any(action => action.Enabled && !action.BeforeRequest(session, rule))))
            {
                break;
            }
        }
Exemple #6
0
        /// <summary>
        /// The fiddler application before response.
        /// </summary>
        /// <param name="session">
        /// The session.
        /// </param>
        private void FiddlerApplicationBeforeResponse(Session session)
        {
            var requestProperties = new RequestProperties(session.fullUrl, session.oRequest.headers["Referer"], session.oRequest.headers["Accept"]);

            var filteredRules = from r in this.ResponseRules where r.Enabled where r.Matches == null || UriPattern.Match(requestProperties, r.Matches) select r;

            (from rule in filteredRules let rule1 = rule where rule.ResponseActions.Any(action => action.Enabled && !action.OnResponse(session, rule1)) select rule).Any();

            if (this.ResponseReceived != null)
            {
                this.ResponseReceived(
                    session, new ResponseSummaryEventArgs { ResponseCode = session.responseCode, FullUrl = session.fullUrl, ResponseCodeText = session.oResponse.headers.HTTPResponseStatus, Referer = (session.oRequest["Referer"].HasValue() ? session.oRequest["Referer"] : "None") + ", Sessions: " + this.SessionCount, Length = session.ResponseBody.LongLength });
            }
        }
Exemple #7
0
        /// <summary>
        /// The fiddler application before request.
        /// </summary>
        /// <param name="session">
        /// The session.
        /// </param>
        private void FiddlerApplicationBeforeRequest(Session session)
        {
            Interlocked.Increment(ref this._sessionCount);

            var requestProperties = new RequestProperties(session.fullUrl, session.oRequest.headers["Referer"], session.oRequest.headers["Accept"]);

            if (requestProperties.Uri == null)
            {
                // Malformed URI, let's terminate the request.
                session.oRequest.FailSession(400, "Bad Request (Malformed Uri)", String.Empty);
                return;
            }

            var filteredRules = from r in this.RequestRules where r.Enabled where r.Matches == null || UriPattern.Match(requestProperties, r.Matches) select r;

            foreach (var rule in filteredRules.Where(rule => rule.RequestActions.Any(action => action.Enabled && !action.BeforeRequest(session, rule))))
            {
                break;
            }
        }
Exemple #8
0
 private bool MatchDomains(RequestProperties r)
 {
     var include = !this.IncludeDomains.Any() || this.IncludeDomains.Any(d => r.Uri.IsDomainOrSubdomain(d));
     return include && (!this.ExcludeDomains.Any() || !this.ExcludeDomains.Any(d => r.Uri.IsDomainOrSubdomain(d)));
 }
Exemple #9
0
 /// <summary>
 /// Checks to see if the request matches the pattern.
 /// </summary>
 /// <param name="properties">
 /// The request properties.
 /// </param>
 /// <returns>
 /// The match type.
 /// </returns>
 public UriPatternMatchType Match(RequestProperties properties)
 {
     return (!this.FilterOptions.Any() || this.FilterOptions.All(f => f.Invoke(properties))) ? this.Match(properties.Uri) : UriPatternMatchType.NonMatch;
 }
Exemple #10
0
        /// <summary>
        /// Checks to see if the request matches any of the patterns.
        /// </summary>
        /// <param name="properties">
        /// The request properties.
        /// </param>
        /// <param name="pattern">
        /// The patterns to match.
        /// </param>
        /// <returns>
        /// <c>true</c> if any of the patterns were a match.
        /// </returns>
        public static bool Match(RequestProperties properties, IEnumerable<UriPattern> pattern)
        {
            foreach (var result in pattern.Select(uriPattern => uriPattern.Match(properties)))
            {
                switch (result)
                {
                    case UriPatternMatchType.Exception:
                        return false;
                    case UriPatternMatchType.Match:
                        return true;
                }
            }

            return false;
        }
Exemple #11
0
        private bool MatchDomains(RequestProperties r)
        {
            var include = !this.IncludeDomains.Any() || this.IncludeDomains.Any(d => r.Uri.IsDomainOrSubdomain(d));

            return(include && (!this.ExcludeDomains.Any() || !this.ExcludeDomains.Any(d => r.Uri.IsDomainOrSubdomain(d))));
        }
Exemple #12
0
 /// <summary>
 /// Checks to see if the request matches the pattern.
 /// </summary>
 /// <param name="properties">
 /// The request properties.
 /// </param>
 /// <returns>
 /// The match type.
 /// </returns>
 public UriPatternMatchType Match(RequestProperties properties)
 {
     return((!this.FilterOptions.Any() || this.FilterOptions.All(f => f.Invoke(properties))) ? this.Match(properties.Uri) : UriPatternMatchType.NonMatch);
 }