diff options
author | Aldo Cortesi <aldo@corte.si> | 2017-03-19 13:21:46 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@corte.si> | 2017-03-19 13:21:46 +1300 |
commit | 22d7c31ea8cad01614debe674826841f843fd318 (patch) | |
tree | c8ab446c6276a013af9aa5dab73e1d38ebb15bb7 | |
parent | 475a4e3eb03e2a704f078e1bb7f11fd199b0bb52 (diff) | |
download | mitmproxy-22d7c31ea8cad01614debe674826841f843fd318.tar.gz mitmproxy-22d7c31ea8cad01614debe674826841f843fd318.tar.bz2 mitmproxy-22d7c31ea8cad01614debe674826841f843fd318.zip |
dumper, mitmdump: kill filtstr
Dumper now also uses view_filter. Passing arguments to mitmdump is now
precisely equivalent to setting both filestream_filter and view_filter.
-rw-r--r-- | mitmproxy/addons/dumper.py | 8 | ||||
-rw-r--r-- | mitmproxy/options.py | 4 | ||||
-rw-r--r-- | mitmproxy/tools/cmdline.py | 4 | ||||
-rw-r--r-- | mitmproxy/tools/main.py | 20 | ||||
-rw-r--r-- | test/mitmproxy/addons/test_dumper.py | 6 | ||||
-rw-r--r-- | test/mitmproxy/tools/test_dump.py | 2 |
6 files changed, 28 insertions, 16 deletions
diff --git a/mitmproxy/addons/dumper.py b/mitmproxy/addons/dumper.py index 222f1167..ca0d32d3 100644 --- a/mitmproxy/addons/dumper.py +++ b/mitmproxy/addons/dumper.py @@ -35,12 +35,12 @@ class Dumper: self.default_contentview = "auto" # type: str def configure(self, options, updated): - if "filtstr" in updated: - if options.filtstr: - self.filter = flowfilter.parse(options.filtstr) + if "view_filter" in updated: + if options.view_filter: + self.filter = flowfilter.parse(options.view_filter) if not self.filter: raise exceptions.OptionsError( - "Invalid filter expression: %s" % options.filtstr + "Invalid filter expression: %s" % options.view_filter ) else: self.filter = None diff --git a/mitmproxy/options.py b/mitmproxy/options.py index 9acdbc29..fa89b807 100644 --- a/mitmproxy/options.py +++ b/mitmproxy/options.py @@ -424,10 +424,6 @@ class Options(optmanager.OptManager): # Dump options self.add_option( - "filtstr", Optional[str], None, - "The filter string for mitmdump." - ) - self.add_option( "flow_detail", int, 1, "Flow detail display level." ) diff --git a/mitmproxy/tools/cmdline.py b/mitmproxy/tools/cmdline.py index da091c12..edb44669 100644 --- a/mitmproxy/tools/cmdline.py +++ b/mitmproxy/tools/cmdline.py @@ -122,8 +122,8 @@ def mitmdump(opts): 'filter_args', nargs="...", help=""" - Filter view expression, used to only show flows that match a certain - filter. See help in mitmproxy for filter expression syntax. + Filter expression, equivalent to setting both the view_filter + and streamfile_filter options. """ ) return parser diff --git a/mitmproxy/tools/main.py b/mitmproxy/tools/main.py index b321e8f8..6db232fc 100644 --- a/mitmproxy/tools/main.py +++ b/mitmproxy/tools/main.py @@ -60,7 +60,11 @@ def process_options(parser, opts, args): return server.DummyServer(pconf) -def run(MasterKlass, args): # pragma: no cover +def run(MasterKlass, args, extra=None): # pragma: no cover + """ + extra: Extra argument processing callable which returns a dict of + options. + """ version_check.check_pyopenssl_version() debug.register_info_dumpers() @@ -80,6 +84,8 @@ def run(MasterKlass, args): # pragma: no cover print(optmanager.dump_defaults(opts)) sys.exit(0) opts.set(*args.setoptions) + if extra: + opts.update(**extra(args)) def cleankill(*args, **kwargs): master.shutdown() @@ -107,7 +113,17 @@ def mitmproxy(args=None): # pragma: no cover def mitmdump(args=None): # pragma: no cover from mitmproxy.tools import dump - m = run(dump.DumpMaster, args) + + def extra(args): + if args.filter_args: + v = " ".join(args.filter_args) + return dict( + view_filter = v, + streamfile_filter = v, + ) + return {} + + m = run(dump.DumpMaster, args, extra) if m and m.errorcheck.has_errored: sys.exit(1) diff --git a/test/mitmproxy/addons/test_dumper.py b/test/mitmproxy/addons/test_dumper.py index fbcc4d16..d2cefe79 100644 --- a/test/mitmproxy/addons/test_dumper.py +++ b/test/mitmproxy/addons/test_dumper.py @@ -16,7 +16,7 @@ from mitmproxy import options def test_configure(): d = dumper.Dumper() with taddons.context(options=options.Options()) as ctx: - ctx.configure(d, filtstr="~b foo") + ctx.configure(d, view_filter="~b foo") assert d.filter f = tflow.tflow(resp=True) @@ -24,10 +24,10 @@ def test_configure(): f.response.content = b"foo" assert d.match(f) - ctx.configure(d, filtstr=None) + ctx.configure(d, view_filter=None) assert not d.filter with pytest.raises(exceptions.OptionsError): - ctx.configure(d, filtstr="~~") + ctx.configure(d, view_filter="~~") assert not d.filter diff --git a/test/mitmproxy/tools/test_dump.py b/test/mitmproxy/tools/test_dump.py index 8e2fa5b2..69a76d2e 100644 --- a/test/mitmproxy/tools/test_dump.py +++ b/test/mitmproxy/tools/test_dump.py @@ -12,7 +12,7 @@ from .. import tservers class TestDumpMaster(tservers.MasterTest): def mkmaster(self, flt, **opts): - o = options.Options(filtstr=flt, verbosity=-1, flow_detail=0, **opts) + o = options.Options(view_filter=flt, verbosity=-1, flow_detail=0, **opts) m = dump.DumpMaster(o, proxy.DummyServer(), with_termlog=False, with_dumper=False) return m |