def __init__(self, options, with_termlog=True): super().__init__(options) self.view = view.View() self.view.sig_view_add.connect(self._sig_view_add) self.view.sig_view_remove.connect(self._sig_view_remove) self.view.sig_view_update.connect(self._sig_view_update) self.view.sig_view_refresh.connect(self._sig_view_refresh) self.events = eventstore.EventStore() self.events.sig_add.connect(self._sig_events_add) self.events.sig_refresh.connect(self._sig_events_refresh) self.options.changed.connect(self._sig_options_update) self.options.changed.connect(self._sig_settings_update) self.addons.add(*addons.default_addons()) self.addons.add( webaddons.WebAddon(), intercept.Intercept(), readfile.ReadFile(), static_viewer.StaticViewer(), self.view, self.events, ) if with_termlog: self.addons.add(termlog.TermLog(), termstatus.TermStatus()) self.app = app.Application( self, self.options.web_debug )
def __init__(self, options, server): master.Master.__init__(self, options, server) self.has_errored = False self.addons.add(termlog.TermLog()) self.addons.add(*addons.default_addons()) self.addons.add(dumper.Dumper()) # This line is just for type hinting self.options = self.options # type: Options if not self.options.no_server: self.add_log( "Proxy server listening at http://{}".format(server.address), "info" ) if self.server and self.options.http2 and not tcp.HAS_ALPN: # pragma: no cover self.add_log( "ALPN support missing (OpenSSL 1.0.2+ required)!\n" "HTTP/2 is disabled. Use --no-http2 to silence this warning.", "error" ) if options.rfile: try: self.load_flows_file(options.rfile) except exceptions.FlowReadException as v: self.add_log("Flow file corrupted.", "error") raise DumpError(v)
def __init__( self, options: Options, server, with_termlog=True, with_dumper=True, ) -> None: master.Master.__init__(self, options, server) self.has_errored = False if with_termlog: self.addons.add(termlog.TermLog()) self.addons.add(*addons.default_addons()) if with_dumper: self.addons.add(dumper.Dumper()) if not self.options.no_server: self.add_log( "Proxy server listening at http://{}:{}".format( server.address[0], server.address[1]), "info") if options.rfile: try: self.load_flows_file(options.rfile) except exceptions.FlowReadException as v: self.add_log("Flow file corrupted.", "error") raise DumpError(v)
def __init__(self, options, server, with_termlog=True): super().__init__(options, server) self.view = view.View() self.view.sig_view_add.connect(self._sig_view_add) self.view.sig_view_remove.connect(self._sig_view_remove) self.view.sig_view_update.connect(self._sig_view_update) self.view.sig_view_refresh.connect(self._sig_view_refresh) self.events = eventstore.EventStore() self.events.sig_add.connect(self._sig_events_add) self.events.sig_refresh.connect(self._sig_events_refresh) self.options.changed.connect(self._sig_options_update) self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, self.events, ) if with_termlog: self.addons.add(termlog.TermLog(), termstatus.TermStatus()) self.app = app.Application(self, self.options.web_debug) # This line is just for type hinting self.options = self.options # type: Options
def __init__(self, options, server, with_termlog=True): super().__init__(options, server) self.view = view.View() self.view.sig_view_add.connect(self._sig_view_add) self.view.sig_view_remove.connect(self._sig_view_remove) self.view.sig_view_update.connect(self._sig_view_update) self.view.sig_view_refresh.connect(self._sig_view_refresh) self.events = eventstore.EventStore() self.events.sig_add.connect(self._sig_events_add) self.events.sig_refresh.connect(self._sig_events_refresh) self.options.changed.connect(self._sig_options_update) self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, self.events, ) if with_termlog: self.addons.add(termlog.TermLog()) self.app = app.Application(self, self.options.wdebug) # This line is just for type hinting self.options = self.options # type: Options if options.rfile: try: self.load_flows_file(options.rfile) except exceptions.FlowReadException as v: self.add_log("Could not read flow file: %s" % v, "error")
def test_simple(self): t = termlog.TermLog() sio = io.StringIO() t.configure(dump.Options(tfile=sio, verbosity=2), set([])) t.log(log.LogEntry("one", "info")) assert "one" in sio.getvalue() t.log(log.LogEntry("two", "debug")) assert "two" not in sio.getvalue()
def test_styling(monkeypatch) -> None: f = io.StringIO() t = termlog.TermLog(out=f) t.out_has_vt_codes = True with taddons.context(t) as tctx: tctx.configure(t) t.add_log(log.LogEntry("hello world", "info")) assert f.getvalue() == "\x1b[22mhello world\x1b[0m\n"
def test_output(self, outfile, expected_out, expected_err, capfd): t = termlog.TermLog(outfile=outfile) with taddons.context(options=Options(verbosity=2)) as tctx: tctx.configure(t) t.log(log.LogEntry("one", "info")) t.log(log.LogEntry("two", "debug")) t.log(log.LogEntry("three", "warn")) t.log(log.LogEntry("four", "error")) out, err = capfd.readouterr() assert out.strip().splitlines() == expected_out assert err.strip().splitlines() == expected_err
def test_output(capsys): t = termlog.TermLog() with taddons.context(t) as tctx: tctx.options.termlog_verbosity = "info" tctx.configure(t) t.add_log(log.LogEntry("one", "info")) t.add_log(log.LogEntry("two", "debug")) t.add_log(log.LogEntry("three", "warn")) t.add_log(log.LogEntry("four", "error")) out, err = capsys.readouterr() assert out.strip().splitlines() == ["one", "three"] assert err.strip().splitlines() == ["four"]
def __init__(self, proxy_events, listen_port, include_path): self.opts = options.Options() self.opts.listen_port = listen_port self.opts.confdir = include_path self.master = master.Master(self.opts) proxy_events.set_proxy(self) self.master.addons.add(proxy_events) self.master.addons.add(termlog.TermLog()) self.master.addons.add(*addons.default_addons()) self.master.addons.add(keepserving.KeepServing(), readfile.ReadFileStdin())
def __init__( self, options: options.Options, with_termlog=True, with_dumper=True, ) -> None: super().__init__(options) self.errorcheck = ErrorCheck() if with_termlog: self.addons.add(termlog.TermLog(), termstatus.TermStatus()) self.addons.add(*addons.default_addons()) if with_dumper: self.addons.add(dumper.Dumper()) self.addons.add(keepserving.KeepServing(), self.errorcheck)
def __init__(self, options, server, with_termlog=False) -> None: master.Master.__init__(self, options, server) self.has_errored = False self.monitor_host = 'monitor.zkt' self.monitor_port = 80 # TODO: 考虑用tornado替代flask以减少冗余依赖 # 将Flask的实例注入mitmproxy self.addons.add( wsgiapp.WSGIApp(app, self.monitor_host, self.monitor_port)) self.db_session = DBSession() if with_termlog: self.addons.add(termlog.TermLog()) self.addons.add(*addons.default_addons()) if not self.options.no_server: self.add_log("代理服务运行于 http://{}".format(server.address), "info")
def __init__( self, options: options.Options, server, with_termlog=True, with_dumper=True, ) -> None: master.Master.__init__(self, options, server) self.errorcheck = ErrorCheck() if with_termlog: self.addons.add(termlog.TermLog(), termstatus.TermStatus()) self.addons.add(*addons.default_addons()) if with_dumper: self.addons.add(dumper.Dumper()) self.addons.add(readstdin.ReadStdin(), keepserving.KeepServing(), self.errorcheck)
def __init__( self, options: options.Options, with_termlog=True, with_dumper=True, ) -> None: super().__init__(options) if with_termlog: self.addons.add(termlog.TermLog()) self.addons.add(*addons.default_addons()) if with_dumper: self.addons.add(dumper.Dumper()) self.addons.add( keepserving.KeepServing(), readfile.ReadFileStdin(), errorcheck.ErrorCheck(), )
def __init__( self, options: options.Options, mode, flow_name, ) -> None: super().__init__(options) self.addons.add(termlog.TermLog()) self.addons.add(termstatus.TermStatus()) self.addons.add(keepserving.KeepServing()) self.addons.add(*addons.default_addons()) if mode == "fuzz": self.addons.add(dumper.Dumper()) self.addons.add(FuzzResponseAnalyzer()) if mode == "runfuzz": self.addons.add(FuzzResponseAnalyzer()) if mode == "capture": self.addons.add(Capture(flow_name)) if mode == "intercept": self.addons.add(Interceptor())
def __init__( self, options: options.Options, server, with_termlog=True, with_dumper=True, ) -> None: master.Master.__init__(self, options, server) self.has_errored = False if with_termlog: self.addons.add(termlog.TermLog(), termstatus.TermStatus()) self.addons.add(*addons.default_addons()) if with_dumper: self.addons.add(dumper.Dumper()) if options.rfile: try: self.load_flows_file(options.rfile) except exceptions.FlowReadException as v: self.add_log("Flow file corrupted.", "error") raise exceptions.OptionsError(v)