diff options
Diffstat (limited to 'mitmproxy/tools')
-rw-r--r-- | mitmproxy/tools/cmdline.py | 62 | ||||
-rw-r--r-- | mitmproxy/tools/console/options.py | 10 |
2 files changed, 13 insertions, 59 deletions
diff --git a/mitmproxy/tools/cmdline.py b/mitmproxy/tools/cmdline.py index 1d5bd017..bb11b9c2 100644 --- a/mitmproxy/tools/cmdline.py +++ b/mitmproxy/tools/cmdline.py @@ -1,5 +1,4 @@ import argparse -import re import os from mitmproxy import exceptions @@ -41,40 +40,6 @@ def _parse_hook(s): return patt, a, b -def parse_replace_hook(s): - """ - Returns a (pattern, regex, replacement) tuple. - - The general form for a replacement hook is as follows: - - /patt/regex/replacement - - The first character specifies the separator. Example: - - :~q:foo:bar - - If only two clauses are specified, the pattern is set to match - universally (i.e. ".*"). Example: - - /foo/bar/ - - Clauses are parsed from left to right. Extra separators are taken to be - part of the final clause. For instance, the replacement clause below is - "foo/bar/": - - /one/two/foo/bar/ - - Checks that pattern and regex are both well-formed. Raises - ParseException on error. - """ - patt, regex, replacement = _parse_hook(s) - try: - re.compile(regex) - except re.error as e: - raise ParseException("Malformed replacement regex: %s" % str(e)) - return patt, regex, replacement - - def parse_setheader(s): """ Returns a (pattern, header, value) tuple. @@ -116,26 +81,6 @@ def get_common_options(args): if stream_large_bodies: stream_large_bodies = human.parse_size(stream_large_bodies) - reps = [] - for i in args.replace or []: - try: - p = parse_replace_hook(i) - except ParseException as e: - raise exceptions.OptionsError(e) - reps.append(p) - for i in args.replace_file or []: - try: - patt, rex, path = parse_replace_hook(i) - except ParseException as e: - raise exceptions.OptionsError(e) - try: - v = open(path, "rb").read() - except IOError as e: - raise exceptions.OptionsError( - "Could not read replace file: %s" % path - ) - reps.append((patt, rex, v)) - setheaders = [] for i in args.setheader or []: try: @@ -224,7 +169,8 @@ def get_common_options(args): refresh_server_playback=not args.norefresh, server_replay_use_headers=args.server_replay_use_headers, rfile=args.rfile, - replacements=reps, + replacements=args.replacements, + replacement_files=args.replacement_files, setheaders=setheaders, server_replay=args.server_replay, scripts=args.scripts, @@ -676,13 +622,13 @@ def replacements(parser): ) group.add_argument( "--replace", - action="append", type=str, dest="replace", + action="append", type=str, dest="replacements", metavar="PATTERN", help="Replacement pattern." ) group.add_argument( "--replace-from-file", - action="append", type=str, dest="replace_file", + action="append", type=str, dest="replacement_files", metavar="PATH", help=""" Replacement pattern, where the replacement clause is a path to a diff --git a/mitmproxy/tools/console/options.py b/mitmproxy/tools/console/options.py index 8c953e8e..e88006fe 100644 --- a/mitmproxy/tools/console/options.py +++ b/mitmproxy/tools/console/options.py @@ -6,6 +6,8 @@ from mitmproxy.tools.console import grideditor from mitmproxy.tools.console import select from mitmproxy.tools.console import signals +from mitmproxy.addons import replace + footer = [ ('heading_key', "enter/space"), ":toggle ", ('heading_key', "C"), ":clear all ", @@ -215,10 +217,16 @@ class Options(urwid.WidgetWrap): ) def replacepatterns(self): + data = [] + for d in self.master.options.replacements: + if isinstance(d, str): + data.append(replace.parse_hook(d)) + else: + data.append(d) self.master.view_grideditor( grideditor.ReplaceEditor( self.master, - self.master.options.replacements, + data, self.master.options.setter("replacements") ) ) |