diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2014-10-25 15:30:54 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2014-10-25 15:30:54 +1300 |
commit | 00d0ee5ad56d8243b1e9bfffec9a941e11359d2c (patch) | |
tree | db51a4a1636249ff793b3618f28df5075473cc7e /libpathod/cmdline.py | |
parent | d6ee5327112182202513ff6ce62d95df1567fdb6 (diff) | |
download | mitmproxy-00d0ee5ad56d8243b1e9bfffec9a941e11359d2c.tar.gz mitmproxy-00d0ee5ad56d8243b1e9bfffec9a941e11359d2c.tar.bz2 mitmproxy-00d0ee5ad56d8243b1e9bfffec9a941e11359d2c.zip |
Parse patterns eagerly on instantiation
Diffstat (limited to 'libpathod/cmdline.py')
-rw-r--r-- | libpathod/cmdline.py | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/libpathod/cmdline.py b/libpathod/cmdline.py index 2c6e094e..1a000a93 100644 --- a/libpathod/cmdline.py +++ b/libpathod/cmdline.py @@ -3,7 +3,8 @@ import argparse import os import os.path import sys -from . import pathoc, pathod, version, utils +import re +from . import pathoc, pathod, version, utils, language from netlib import http_uastrings @@ -78,7 +79,10 @@ def go_pathoc(): group.add_argument( "--sslversion", dest="sslversion", type=int, default=4, choices=[1, 2, 3, 4], - help="Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default to SSLv23." + help=""" + Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default + to SSLv23. + """ ) group = parser.add_argument_group( @@ -149,9 +153,14 @@ def go_pathoc(): for r in args.request: if os.path.exists(r): data = open(r).read() - reqs.append(data) - else: - reqs.append(r) + r = data + try: + req = language.parse_request(r) + except language.ParseException, v: + print >> sys.stderr, "Error parsing request spec: %s"%v.msg + print >> sys.stderr, v.marked() + sys.exit(1) + reqs.append(req) args.request = reqs pathoc.main(args) @@ -267,7 +276,8 @@ def go_pathod(): group.add_argument( "--sslversion", dest="sslversion", type=int, default=4, choices=[1, 2, 3, 4], - help="Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default to SSLv23." + help=""""Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default + to SSLv23.""" ) group = parser.add_argument_group( @@ -327,13 +337,23 @@ def go_pathod(): args.sizelimit = sizelimit anchors = [] - for patt, spec in anchors: + for patt, spec in args.anchors: if os.path.exists(spec): data = open(spec).read() - anchors.append((patt, data)) - else: - anchors.append((patt, spec)) + spec = data + + try: + req = language.parse_response(spec) + except language.ParseException, v: + print >> sys.stderr, "Error parsing anchor spec: %s"%v.msg + print >> sys.stderr, v.marked() + sys.exit(1) + try: + arex = re.compile(patt) + except re.error: + print >> sys.stderr, "Invalid regex in anchor: %s" % patt + sys.exit(1) + anchors.append((arex, req)) args.anchors = anchors pathod.main(args) - |