aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/filt/filt.pegjs
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-12-12 22:41:10 +0100
committerMaximilian Hils <git@maximilianhils.com>2014-12-12 22:41:10 +0100
commita09eb2bef42e241c6ff1698606f4a0decbca174a (patch)
tree4e28cb287184bb398194db71794ecf310046b639 /web/src/js/filt/filt.pegjs
parent3b55889310ea1ba392d3b02909d4e9affc09aa3f (diff)
downloadmitmproxy-a09eb2bef42e241c6ff1698606f4a0decbca174a.tar.gz
mitmproxy-a09eb2bef42e241c6ff1698606f4a0decbca174a.tar.bz2
mitmproxy-a09eb2bef42e241c6ff1698606f4a0decbca174a.zip
add filter descriptions
Diffstat (limited to 'web/src/js/filt/filt.pegjs')
-rw-r--r--web/src/js/filt/filt.pegjs65
1 files changed, 50 insertions, 15 deletions
diff --git a/web/src/js/filt/filt.pegjs b/web/src/js/filt/filt.pegjs
index 94a5ca77..334f5d9b 100644
--- a/web/src/js/filt/filt.pegjs
+++ b/web/src/js/filt/filt.pegjs
@@ -3,31 +3,42 @@
{
function or(first, second) {
// Add explicit function names to ease debugging.
- return function orFilter() {
+ function orFilter() {
first.apply(this, arguments) || second.apply(this, arguments);
};
+ orFilter.desc = first.desc + " or " + second.desc;
+ return orFilter;
}
function and(first, second) {
- return function andFilter() {
+ function andFilter() {
return first.apply(this, arguments) && second.apply(this, arguments);
}
+ andFilter.desc = first.desc + " and " + second.desc;
+ return andFilter;
}
function not(expr) {
- return function notFilter() {
+ function notFilter() {
return !expr.apply(this, arguments);
};
+ notFilter.desc = "not " + expr.desc;
+ return notFilter;
}
function binding(expr) {
- return function bindingFilter() {
+ function bindingFilter() {
return expr.apply(this, arguments);
};
+ bindingFilter.desc = "(" + expr.desc + ")";
+ return bindingFilter;
}
function trueFilter(flow) {
return true;
}
+trueFilter.desc = "true";
function falseFilter(flow) {
return false;
}
+falseFilter.desc = "false";
+
var ASSET_TYPES = [
new RegExp("text/javascript"),
new RegExp("application/x-javascript"),
@@ -48,83 +59,107 @@ function assetFilter(flow) {
}
return false;
}
+assetFilter.desc = "is asset";
function responseCode(code){
code = parseInt(code);
- return function responseCodeFilter(flow){
+ function responseCodeFilter(flow){
return flow.response && flow.response.code === code;
};
+ responseCodeFilter.desc = "resp. code is " + code;
+ return responseCodeFilter;
}
function domain(regex){
regex = new RegExp(regex, "i");
- return function domainFilter(flow){
+ function domainFilter(flow){
return flow.request && regex.test(flow.request.host);
};
+ domainFilter.desc = "domain matches " + regex;
+ return domainFilter;
}
function errorFilter(flow){
return !!flow.error;
}
+errorFilter.desc = "has error";
function header(regex){
regex = new RegExp(regex, "i");
- return function headerFilter(flow){
+ function headerFilter(flow){
return (
(flow.request && RequestUtils.match_header(flow.request, regex))
||
(flow.response && ResponseUtils.match_header(flow.response, regex))
);
};
+ headerFilter.desc = "header matches " + regex;
+ return headerFilter;
}
function requestHeader(regex){
regex = new RegExp(regex, "i");
- return function requestHeaderFilter(flow){
+ function requestHeaderFilter(flow){
return (flow.request && RequestUtils.match_header(flow.request, regex));
}
+ requestHeaderFilter.desc = "req. header matches " + regex;
+ return requestHeaderFilter;
}
function responseHeader(regex){
regex = new RegExp(regex, "i");
- return function responseHeaderFilter(flow){
+ function responseHeaderFilter(flow){
return (flow.response && ResponseUtils.match_header(flow.response, regex));
}
+ responseHeaderFilter.desc = "resp. header matches " + regex;
+ return responseHeaderFilter;
}
function method(regex){
regex = new RegExp(regex, "i");
- return function methodFilter(flow){
+ function methodFilter(flow){
return flow.request && regex.test(flow.request.method);
};
+ methodFilter.desc = "method matches " + regex;
+ return methodFilter;
}
function noResponseFilter(flow){
return flow.request && !flow.response;
}
+noResponseFilter.desc = "has no response";
function responseFilter(flow){
return !!flow.response;
}
+responseFilter.desc = "has response";
function contentType(regex){
regex = new RegExp(regex, "i");
- return function contentTypeFilter(flow){
+ function contentTypeFilter(flow){
return (
(flow.request && regex.test(RequestUtils.getContentType(flow.request)))
||
(flow.response && regex.test(ResponseUtils.getContentType(flow.response)))
);
};
+ contentTypeFilter.desc = "content type matches " + regex;
+ return contentTypeFilter;
}
function requestContentType(regex){
regex = new RegExp(regex, "i");
- return function requestContentTypeFilter(flow){
+ function requestContentTypeFilter(flow){
return flow.request && regex.test(RequestUtils.getContentType(flow.request));
};
+ requestContentTypeFilter.desc = "req. content type matches " + regex;
+ return requestContentTypeFilter;
}
function responseContentType(regex){
regex = new RegExp(regex, "i");
- return function responseContentTypeFilter(flow){
+ function responseContentTypeFilter(flow){
return flow.response && regex.test(ResponseUtils.getContentType(flow.response));
};
+ responseContentTypeFilter.desc = "resp. content type matches " + regex;
+ return responseContentTypeFilter;
}
function url(regex){
regex = new RegExp(regex, "i");
- return function urlFilter(flow){
+ function urlFilter(flow){
return flow.request && regex.test(RequestUtils.pretty_url(flow.request));
}
+ urlFilter.desc = "url matches " + regex;
+ return urlFilter;
}
}
@@ -155,7 +190,7 @@ NotExpr
BindingExpr
= "(" __ expr:OrExpr __ ")"
- { return binding(orExpr); }
+ { return binding(expr); }
/ Expr
Expr