diff options
| author | Aldo Cortesi <aldo@nullcube.com> | 2016-10-04 13:00:15 +1100 |
|---|---|---|
| committer | Aldo Cortesi <aldo@nullcube.com> | 2016-10-04 13:00:15 +1100 |
| commit | 7fe09f4d26e604db9d3e7f9868b3f0da0b3a6406 (patch) | |
| tree | 9749b5b1477eb8638d2e649328583af59d094b8e /mitmproxy | |
| parent | 2bd868662937b504cccd825e9e24e3cb6a142708 (diff) | |
| download | mitmproxy-7fe09f4d26e604db9d3e7f9868b3f0da0b3a6406.tar.gz mitmproxy-7fe09f4d26e604db9d3e7f9868b3f0da0b3a6406.tar.bz2 mitmproxy-7fe09f4d26e604db9d3e7f9868b3f0da0b3a6406.zip | |
Consolidate logging
- Make log event handler work
- Move terminal event log into an addon
- Clean various log related errors and duplications
Diffstat (limited to 'mitmproxy')
| -rw-r--r-- | mitmproxy/builtins/termlog.py | 23 | ||||
| -rw-r--r-- | mitmproxy/controller.py | 20 | ||||
| -rw-r--r-- | mitmproxy/dump.py | 19 | ||||
| -rw-r--r-- | mitmproxy/flow/master.py | 2 | ||||
| -rw-r--r-- | mitmproxy/proxy/__init__.py | 4 | ||||
| -rw-r--r-- | mitmproxy/proxy/root_context.py | 9 | ||||
| -rw-r--r-- | mitmproxy/proxy/server.py | 3 |
7 files changed, 50 insertions, 30 deletions
diff --git a/mitmproxy/builtins/termlog.py b/mitmproxy/builtins/termlog.py new file mode 100644 index 00000000..c8259f0c --- /dev/null +++ b/mitmproxy/builtins/termlog.py @@ -0,0 +1,23 @@ +from __future__ import absolute_import, print_function, division + +import click + +from mitmproxy import utils + + +class TermLog: + def __init__(self): + self.options = None + + def configure(self, options, updated): + self.options = options + + def log(self, e): + if self.options.verbosity >= utils.log_tier(e.level): + click.secho( + e.msg, + file=self.options.tfile, + fg=dict(error="red", warn="yellow").get(e.level), + dim=(e.level == "debug"), + err=(e.level == "error") + ) diff --git a/mitmproxy/controller.py b/mitmproxy/controller.py index 51a9b146..1a8801e1 100644 --- a/mitmproxy/controller.py +++ b/mitmproxy/controller.py @@ -28,21 +28,26 @@ Events = frozenset([ "requestheaders", "response", "responseheaders", + "error", "websocket_handshake", "next_layer", - "error", - "log", - - "start", "configure", "done", + "log", + "start", "tick", ]) +class LogEntry(object): + def __init__(self, msg, level): + self.msg = msg + self.level = level + + class Log(object): def __init__(self, master): self.master = master @@ -90,11 +95,16 @@ class Master(object): mitmproxy_ctx.master = None mitmproxy_ctx.log = None + def tell(self, mtype, m): + m.reply = DummyReply() + self.event_queue.put((mtype, m)) + def add_log(self, e, level): """ level: debug, info, warn, error """ - pass + with self.handlecontext(): + self.addons("log", LogEntry(e, level)) def add_server(self, server): # We give a Channel to the server which can be used to communicate with the master diff --git a/mitmproxy/dump.py b/mitmproxy/dump.py index 6bed8fcc..0e942eac 100644 --- a/mitmproxy/dump.py +++ b/mitmproxy/dump.py @@ -3,15 +3,12 @@ from __future__ import absolute_import, print_function, division from typing import Optional # noqa import typing # noqa -import click - from mitmproxy import controller from mitmproxy import exceptions from mitmproxy import flow from mitmproxy import builtins -from mitmproxy import utils from mitmproxy import options -from mitmproxy.builtins import dumper +from mitmproxy.builtins import dumper, termlog from netlib import tcp @@ -42,6 +39,7 @@ class DumpMaster(flow.FlowMaster): self.has_errored = False self.addons.add(*builtins.default_addons()) self.addons.add(dumper.Dumper()) + self.addons.add(termlog.TermLog()) # This line is just for type hinting self.options = self.options # type: Options self.set_stream_large_bodies(options.stream_large_bodies) @@ -79,17 +77,10 @@ class DumpMaster(flow.FlowMaster): except exceptions.FlowReadException as e: raise DumpError(str(e)) - def add_log(self, e, level="info"): - if level == "error": + @controller.handler + def log(self, e): + if e.level == "error": self.has_errored = True - if self.options.verbosity >= utils.log_tier(level): - click.secho( - e, - file=self.options.tfile, - fg=dict(error="red", warn="yellow").get(level), - dim=(level == "debug"), - err=(level == "error") - ) @controller.handler def request(self, f): diff --git a/mitmproxy/flow/master.py b/mitmproxy/flow/master.py index 7149fec9..a2b225b8 100644 --- a/mitmproxy/flow/master.py +++ b/mitmproxy/flow/master.py @@ -190,7 +190,7 @@ class FlowMaster(controller.Master): @controller.handler def log(self, l): - self.add_log(l.msg, l.level) + pass @controller.handler def clientconnect(self, root_layer): diff --git a/mitmproxy/proxy/__init__.py b/mitmproxy/proxy/__init__.py index ada9fa12..e3d249fa 100644 --- a/mitmproxy/proxy/__init__.py +++ b/mitmproxy/proxy/__init__.py @@ -1,11 +1,11 @@ from __future__ import absolute_import, print_function, division from .config import ProxyConfig -from .root_context import RootContext, Log +from .root_context import RootContext from .server import ProxyServer, DummyServer __all__ = [ "ProxyServer", "DummyServer", "ProxyConfig", - "RootContext", "Log", + "RootContext" ] diff --git a/mitmproxy/proxy/root_context.py b/mitmproxy/proxy/root_context.py index 9827ef74..cfa04bdf 100644 --- a/mitmproxy/proxy/root_context.py +++ b/mitmproxy/proxy/root_context.py @@ -5,6 +5,7 @@ import sys import six import netlib.exceptions +from mitmproxy import controller from mitmproxy import exceptions from mitmproxy import protocol from mitmproxy.proxy import modes @@ -118,7 +119,7 @@ class RootContext(object): for i in subs: full_msg.append(" -> " + i) full_msg = "\n".join(full_msg) - self.channel.tell("log", Log(full_msg, level)) + self.channel.tell("log", controller.LogEntry(full_msg, level)) @property def layers(self): @@ -126,9 +127,3 @@ class RootContext(object): def __repr__(self): return "RootContext" - - -class Log(object): - def __init__(self, msg, level="info"): - self.msg = msg - self.level = level diff --git a/mitmproxy/proxy/server.py b/mitmproxy/proxy/server.py index c5fd5f9e..182f4602 100644 --- a/mitmproxy/proxy/server.py +++ b/mitmproxy/proxy/server.py @@ -9,6 +9,7 @@ import six import netlib.exceptions from mitmproxy import exceptions from mitmproxy import models +from mitmproxy import controller from mitmproxy.proxy import modes from mitmproxy.proxy import root_context from netlib import tcp @@ -155,4 +156,4 @@ class ConnectionHandler(object): def log(self, msg, level): msg = "{}: {}".format(repr(self.client_conn.address), msg) - self.channel.tell("log", root_context.Log(msg, level)) + self.channel.tell("log", controller.LogEntry(msg, level)) |
