def __init__(self, opts): super().__init__(opts) self.start_err: typing.Optional[log.LogEntry] = None self.view: view.View = view.View() self.events = eventstore.EventStore() self.events.sig_add.connect(self.sig_add_log) self.stream_path = None self.keymap = keymap.Keymap(self) defaultkeys.map(self.keymap) self.options.errored.connect(self.options_error) self.view_stack = [] self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, self.events, readfile.ReadFile(), consoleaddons.ConsoleAddon(self), keymap.KeymapConfig(), ) def sigint_handler(*args, **kwargs): self.prompt_for_exit() signal.signal(signal.SIGINT, sigint_handler) self.window = None
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, 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 __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, opts): super().__init__(opts) self.view = view.View() # type: view.View self.stream_path = None self.keymap = keymap.Keymap(self) defaultkeys.map(self.keymap) self.options.errored.connect(self.options_error) self.view_stack = [] signals.call_in.connect(self.sig_call_in) signals.sig_add_log.connect(self.sig_add_log) self.addons.add(consoleaddons.Logger()) self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, consoleaddons.UnsupportedLog(), readfile.ReadFile(), consoleaddons.ConsoleAddon(self), ) def sigint_handler(*args, **kwargs): self.prompt_for_exit() signal.signal(signal.SIGINT, sigint_handler) self.window = None
def test_simple(): r = intercept.Intercept() with taddons.context(options=Options()) as tctx: assert not r.filt tctx.configure(r, intercept="~q") assert r.filt tutils.raises(exceptions.OptionsError, tctx.configure, r, intercept="~~") tctx.configure(r, intercept=None) assert not r.filt tctx.configure(r, intercept="~s") f = tflow.tflow(resp=True) tctx.cycle(r, f) assert f.intercepted f = tflow.tflow(resp=False) tctx.cycle(r, f) assert not f.intercepted f = tflow.tflow(resp=True) f.reply._state = "handled" r.response(f) assert f.intercepted
def __init__(self, options, server): super().__init__(options, server) self.view = view.View() # type: view.View self.view.sig_view_update.connect(signals.flow_change.send) self.stream_path = None # This line is just for type hinting self.options = self.options # type: Options self.keymap = keymap.Keymap(self) default_keymap(self.keymap) self.options.errored.connect(self.options_error) self.logbuffer = urwid.SimpleListWalker([]) self.view_stack = [] signals.call_in.connect(self.sig_call_in) signals.pop_view_state.connect(self.sig_pop_view_state) signals.replace_view_state.connect(self.sig_replace_view_state) signals.push_view_state.connect(self.sig_push_view_state) signals.sig_add_log.connect(self.sig_add_log) self.addons.add(Logger()) self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, UnsupportedLog(), readfile.ReadFile(), ConsoleCommands(self), ) def sigint_handler(*args, **kwargs): self.prompt_for_exit() signal.signal(signal.SIGINT, sigint_handler)
def __init__(self, opts): super().__init__(opts) self.view: view.View = view.View() self.events = eventstore.EventStore() self.events.sig_add.connect(self.sig_add_log) self.stream_path = None self.keymap = keymap.Keymap(self) defaultkeys.map(self.keymap) self.options.errored.connect(self.options_error) self.view_stack = [] self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, self.events, readfile.ReadFile(), consoleaddons.ConsoleAddon(self), keymap.KeymapConfig(), errorcheck.ErrorCheck(log_to_stderr=True), ) self.window = None
def __init__(self, options, server): super().__init__(options, server) self.state = WebState() self.addons.add(*addons.default_addons()) self.addons.add(self.state, intercept.Intercept()) self.app = app.Application( self, self.options.wdebug, self.options.wauthenticator ) # 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" ) if options.outfile: err = self.start_stream_to_path( options.outfile[0], options.outfile[1] ) if err: print("Stream file error: {}".format(err), file=sys.stderr) sys.exit(1)
def __init__(self, options, server): super().__init__(options, server) self.view = view.View() # type: view.View self.stream_path = None # This line is just for type hinting self.options = self.options # type: Options self.options.errored.connect(self.options_error) self.logbuffer = urwid.SimpleListWalker([]) self.view_stack = [] signals.call_in.connect(self.sig_call_in) signals.pop_view_state.connect(self.sig_pop_view_state) signals.replace_view_state.connect(self.sig_replace_view_state) signals.push_view_state.connect(self.sig_push_view_state) signals.sig_add_log.connect(self.sig_add_log) self.addons.add(Logger()) self.addons.add(*addons.default_addons()) self.addons.add(intercept.Intercept(), self.view) def sigint_handler(*args, **kwargs): self.prompt_for_exit() signal.signal(signal.SIGINT, sigint_handler)
def test_tcp(): r = intercept.Intercept() with taddons.context(r) as tctx: tctx.configure(r, intercept="~tcp") f = tflow.ttcpflow() tctx.cycle(r, f) assert f.intercepted tctx.configure(r, intercept_active=False) f = tflow.ttcpflow() tctx.cycle(r, f) assert not f.intercepted
def test_already_taken(): r = intercept.Intercept() with taddons.context(r) as tctx: tctx.configure(r, intercept="~q") f = tflow.tflow() tctx.invoke(r, "request", f) assert f.intercepted f = tflow.tflow() f.reply.take() tctx.invoke(r, "request", f) assert not f.intercepted
def test_already_taken(): r = intercept.Intercept() with taddons.context(r) as tctx: tctx.configure(r, intercept="~q") f = tflow.tflow() tctx.invoke(r, layers.http.HttpRequestHook(f)) assert f.intercepted f = tflow.tflow() f.reply.take() tctx.invoke(r, layers.http.HttpRequestHook(f)) assert not f.intercepted
def test_simple(): r = intercept.Intercept() with taddons.context(r) as tctx: assert not r.filt tctx.configure(r, intercept="~q") assert r.filt assert tctx.options.intercept_active with pytest.raises(exceptions.OptionsError): tctx.configure(r, intercept="~~") tctx.configure(r, intercept=None) assert not r.filt assert not tctx.options.intercept_active tctx.configure(r, intercept="~s") f = tflow.tflow(resp=True) tctx.cycle(r, f) assert f.intercepted f = tflow.tflow(resp=False) tctx.cycle(r, f) assert not f.intercepted f = tflow.tflow(resp=True) r.response(f) assert f.intercepted tctx.configure(r, intercept_active=False) f = tflow.tflow(resp=True) tctx.cycle(r, f) assert not f.intercepted tctx.configure(r, intercept_active=True) f = tflow.tflow(resp=True) tctx.cycle(r, f) assert f.intercepted tctx.configure(r, intercept_active=False) f = tflow.ttcpflow() tctx.cycle(r, f) assert not f.intercepted tctx.configure(r, intercept_active=True) f = tflow.ttcpflow() tctx.cycle(r, f) assert f.intercepted
def __init__(self, options, server): super().__init__(options, server) self.view = view.View() self.view.sig_add.connect(self._sig_add) self.view.sig_remove.connect(self._sig_remove) self.view.sig_update.connect(self._sig_update) self.view.sig_refresh.connect(self._sig_refresh) self.addons.add(*addons.default_addons()) self.addons.add(self.view, intercept.Intercept()) self.app = app.Application(self, self.options.wdebug, self.options.wauthenticator) # 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 __init__(self, options, server): super().__init__(options, server) self.view = view.View() self.stream_path = None # This line is just for type hinting self.options = self.options # type: Options self.options.errored.connect(self.options_error) self.palette = options.palette self.palette_transparent = options.palette_transparent self.logbuffer = urwid.SimpleListWalker([]) self.view_stack = [] signals.call_in.connect(self.sig_call_in) signals.pop_view_state.connect(self.sig_pop_view_state) signals.replace_view_state.connect(self.sig_replace_view_state) signals.push_view_state.connect(self.sig_push_view_state) signals.sig_add_log.connect(self.sig_add_log) self.addons.add(*addons.default_addons()) self.addons.add(intercept.Intercept(), self.view)
def __init__(self, options, server): super().__init__(options, server) if not sys.stdout.isatty(): print( "Error: mitmproxy's console interface requires a tty. " "Please run mitmproxy in an interactive shell environment.", file=sys.stderr) sys.exit(1) self.view = view.View() # type: view.View self.stream_path = None # This line is just for type hinting self.options = self.options # type: Options self.keymap = keymap.Keymap(self) defaultkeys.map(self.keymap) self.options.errored.connect(self.options_error) self.view_stack = [] signals.call_in.connect(self.sig_call_in) signals.sig_add_log.connect(self.sig_add_log) self.addons.add(consoleaddons.Logger()) self.addons.add(*addons.default_addons()) self.addons.add( intercept.Intercept(), self.view, consoleaddons.UnsupportedLog(), readfile.ReadFile(), consoleaddons.ConsoleAddon(self), ) def sigint_handler(*args, **kwargs): self.prompt_for_exit() signal.signal(signal.SIGINT, sigint_handler) self.window = None