aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@corte.si>2016-10-19 13:15:44 +1300
committerGitHub <noreply@github.com>2016-10-19 13:15:44 +1300
commit12cdc1577a8425660f5a018ca6c5a5dad5225826 (patch)
tree31199e39c194f08982e554e5d1621d035a7affae /mitmproxy
parent8b5fb4b61391377fae38c54b94f9aceef3ed6333 (diff)
parent264a09e7789500673282075b2f5b9956268f0cea (diff)
downloadmitmproxy-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.py2
-rw-r--r--mitmproxy/controller.py20
-rw-r--r--mitmproxy/dump.py4
-rw-r--r--mitmproxy/flow/master.py13
-rw-r--r--mitmproxy/main.py4
-rw-r--r--mitmproxy/proxy/server.py3
-rw-r--r--mitmproxy/web/master.py2
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())