def mkmaster(self, filt, **options): cs = StringIO() o = dump.Options(filtstr=filt, **options) return dump.DumpMaster(None, o, outfile=cs)
def test_app(self): o = dump.Options(app=True) m = dump.DumpMaster(None, o) assert len(m.apps.apps) == 1
def test_replacements(self): cs = StringIO() o = dump.Options(replacements=[(".*", "content", "foo")]) m = dump.DumpMaster(None, o, outfile=cs) f = self.cycle(m, "content") assert f.request.content == "foo"
def test_setheader(self): cs = StringIO() o = dump.Options(setheaders=[(".*", "one", "two")]) m = dump.DumpMaster(None, o, outfile=cs) f = self.cycle(m, "content") assert f.request.headers["one"] == "two"
def test_app(self): o = dump.Options(app=True) s = mock.MagicMock() m = dump.DumpMaster(s, o) assert len(m.apps.apps) == 1
def test_options(self): o = dump.Options(verbosity = 2) assert o.verbosity == 2
def test_error(self): o = dump.Options(tfile=StringIO(), flow_detail=1) m = dump.DumpMaster(None, o) f = tutils.tflow(err=True) m.error(f) assert "error" in o.tfile.getvalue()
def test_error(self): o = dump.Options(tfile=io.StringIO(), flow_detail=1) m = dump.DumpMaster(o, proxy.DummyServer()) f = tutils.tflow(err=True) m.error(f) assert "error" in o.tfile.getvalue()
def run(self): """ start one proxy in background with specific port :param port: :param addon: :return: """ args = ['-p', '%s' % self.port, '--stream', '100k'] print('proxy arguments: %s' % ' '.join(args)) def process_options(parser, options, args): from mitmproxy.proxy import server if args.sysinfo: print(debug.sysinfo()) try: debug.register_info_dumpers() except Exception as e: print(str(e)) pconf = config.ProxyConfig(options) if options.no_server: return server.DummyServer(pconf) else: try: return server.ProxyServer(pconf) except exceptions.ServerException as v: print(str(v)) return version_check.check_pyopenssl_version() parser = cmdline.mitmdump() args = parser.parse_args(args) # if args.quiet: args.flow_detail = 0 self.master = None try: dump_options = dump.Options(**cmdline.get_common_options(args)) dump_options.flow_detail = args.flow_detail dump_options.keepserving = args.keepserving dump_options.filtstr = " ".join(args.args) if args.args else None server = process_options(parser, dump_options, args) self.master = FileDumpMaster(server, dump_options) for add_on in self.addon: self.master.addons.add(add_on) def cleankill(*args, **kwargs): self.master.shutdown() # signal.signal(signal.SIGTERM, cleankill) global_config.PROXY = self.master self.master.run() except (dump.DumpError, exceptions.OptionsError) as e: print("mitmdump: %s" % e) return # except (KeyboardInterrupt, _thread.error): # pass if self.master is None or self.master.has_errored: print("mitmdump: errors occurred during run") return