diff options
author | Aldo Cortesi <aldo@corte.si> | 2016-10-19 13:15:44 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-19 13:15:44 +1300 |
commit | 12cdc1577a8425660f5a018ca6c5a5dad5225826 (patch) | |
tree | 31199e39c194f08982e554e5d1621d035a7affae /mitmproxy | |
parent | 8b5fb4b61391377fae38c54b94f9aceef3ed6333 (diff) | |
parent | 264a09e7789500673282075b2f5b9956268f0cea (diff) | |
download | mitmproxy-12cdc1577a8425660f5a018ca6c5a5dad5225826.tar.gz mitmproxy-12cdc1577a8425660f5a018ca6c5a5dad5225826.tar.bz2 mitmproxy-12cdc1577a8425660f5a018ca6c5a5dad5225826.zip |
Merge pull request #1630 from cortesi/multiserv
Let's dispense with this fiction that we support multiple servers
Diffstat (limited to 'mitmproxy')
-rw-r--r-- | mitmproxy/console/master.py | 2 | ||||
-rw-r--r-- | mitmproxy/controller.py | 20 | ||||
-rw-r--r-- | mitmproxy/dump.py | 4 | ||||
-rw-r--r-- | mitmproxy/flow/master.py | 13 | ||||
-rw-r--r-- | mitmproxy/main.py | 4 | ||||
-rw-r--r-- | mitmproxy/proxy/server.py | 3 | ||||
-rw-r--r-- | mitmproxy/web/master.py | 2 |
7 files changed, 14 insertions, 34 deletions
diff --git a/mitmproxy/console/master.py b/mitmproxy/console/master.py index bee5954b..b3752df9 100644 --- a/mitmproxy/console/master.py +++ b/mitmproxy/console/master.py @@ -221,7 +221,7 @@ class Options(mitmproxy.options.Options): class ConsoleMaster(flow.FlowMaster): palette = [] - def __init__(self, server, options): + def __init__(self, options, server): flow.FlowMaster.__init__(self, options, server) self.state = ConsoleState() self.stream_path = None diff --git a/mitmproxy/controller.py b/mitmproxy/controller.py index a225634a..a88500a8 100644 --- a/mitmproxy/controller.py +++ b/mitmproxy/controller.py @@ -87,14 +87,14 @@ class Master: """ The master handles mitmproxy's main event loop. """ - def __init__(self, opts, *servers): + def __init__(self, opts, server): self.options = opts or options.Options() self.addons = addons.Addons(self) self.event_queue = queue.Queue() self.should_exit = threading.Event() - self.servers = [] - for i in servers: - self.add_server(i) + self.server = server + channel = Channel(self.event_queue, self.should_exit) + server.set_channel(channel) @contextlib.contextmanager def handlecontext(self): @@ -121,16 +121,9 @@ class Master: 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 - channel = Channel(self.event_queue, self.should_exit) - server.set_channel(channel) - self.servers.append(server) - def start(self): self.should_exit.clear() - for server in self.servers: - ServerThread(server).start() + ServerThread(self.server).start() def run(self): self.start() @@ -168,8 +161,7 @@ class Master: return changed def shutdown(self): - for server in self.servers: - server.shutdown() + self.server.shutdown() self.should_exit.set() self.addons.done() diff --git a/mitmproxy/dump.py b/mitmproxy/dump.py index bc8716e7..e2167259 100644 --- a/mitmproxy/dump.py +++ b/mitmproxy/dump.py @@ -32,7 +32,7 @@ class Options(options.Options): class DumpMaster(flow.FlowMaster): - def __init__(self, server, options): + def __init__(self, options, server): flow.FlowMaster.__init__(self, options, server) self.has_errored = False self.addons.add(termlog.TermLog()) @@ -41,7 +41,7 @@ class DumpMaster(flow.FlowMaster): # This line is just for type hinting self.options = self.options # type: Options - if not self.options.no_server and server: + if not self.options.no_server: self.add_log( "Proxy server listening at http://{}".format(server.address), "info" diff --git a/mitmproxy/flow/master.py b/mitmproxy/flow/master.py index 5684f6b4..e02540b1 100644 --- a/mitmproxy/flow/master.py +++ b/mitmproxy/flow/master.py @@ -35,19 +35,6 @@ def event_sequence(f): class FlowMaster(controller.Master): - - @property - def server(self): - # At some point, we may want to have support for multiple servers. - # For now, this suffices. - if len(self.servers) > 0: - return self.servers[0] - - def __init__(self, options, server): - super().__init__(options) - if server: - self.add_server(server) - def create_request(self, method, scheme, host, port, path): """ this method creates a new artificial and minimalist request also adds it to flowlist diff --git a/mitmproxy/main.py b/mitmproxy/main.py index 59832a6b..19ee5027 100644 --- a/mitmproxy/main.py +++ b/mitmproxy/main.py @@ -95,7 +95,7 @@ def mitmdump(args=None): # pragma: no cover dump_options.keepserving = args.keepserving dump_options.filtstr = " ".join(args.args) if args.args else None server = process_options(parser, dump_options, args) - master = dump.DumpMaster(server, dump_options) + master = dump.DumpMaster(dump_options, server) def cleankill(*args, **kwargs): master.shutdown() @@ -132,7 +132,7 @@ def mitmweb(args=None): # pragma: no cover web_options.process_web_options(parser) server = process_options(parser, web_options, args) - m = web.master.WebMaster(server, web_options) + m = web.master.WebMaster(web_options, server) except exceptions.OptionsError as e: print("mitmweb: %s" % e, file=sys.stderr) sys.exit(1) diff --git a/mitmproxy/proxy/server.py b/mitmproxy/proxy/server.py index 5f2a00dd..3d66812f 100644 --- a/mitmproxy/proxy/server.py +++ b/mitmproxy/proxy/server.py @@ -15,8 +15,9 @@ from netlib.http import http1 class DummyServer: bound = False - def __init__(self, config): + def __init__(self, config=None): self.config = config + self.address = "dummy" def set_channel(self, channel): pass diff --git a/mitmproxy/web/master.py b/mitmproxy/web/master.py index a05d9780..235ec70d 100644 --- a/mitmproxy/web/master.py +++ b/mitmproxy/web/master.py @@ -132,7 +132,7 @@ class Options(options.Options): class WebMaster(flow.FlowMaster): - def __init__(self, server, options): + def __init__(self, options, server): super().__init__(options, server) self.state = WebState() self.addons.add(*builtins.default_addons()) |