aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2014-09-14 11:46:01 +1200
committerAldo Cortesi <aldo@nullcube.com>2014-09-14 11:46:01 +1200
commit17868f61a98cb97e6b17ee58e6211e4fa89e62d4 (patch)
tree090e17a6753e59088457ab5424dd45908dac0a9f
parent81e3a6e8e661b212bf45fb37623556f2793d2184 (diff)
downloadmitmproxy-17868f61a98cb97e6b17ee58e6211e4fa89e62d4.tar.gz
mitmproxy-17868f61a98cb97e6b17ee58e6211e4fa89e62d4.tar.bz2
mitmproxy-17868f61a98cb97e6b17ee58e6211e4fa89e62d4.zip
Remove external app option, make tick timeout explicit
-rw-r--r--libmproxy/cmdline.py6
-rw-r--r--libmproxy/console/__init__.py2
-rw-r--r--libmproxy/controller.py2
-rw-r--r--libmproxy/dump.py3
-rw-r--r--libmproxy/flow.py39
-rw-r--r--libmproxy/web/__init__.py1
-rw-r--r--test/test_flow.py6
-rw-r--r--test/tservers.py3
8 files changed, 14 insertions, 48 deletions
diff --git a/libmproxy/cmdline.py b/libmproxy/cmdline.py
index 39b0bfa3..caa3a9c8 100644
--- a/libmproxy/cmdline.py
+++ b/libmproxy/cmdline.py
@@ -156,7 +156,6 @@ def get_common_options(options):
app=options.app,
app_host=options.app_host,
app_port=options.app_port,
- app_external=options.app_external,
anticache=options.anticache,
anticomp=options.anticomp,
@@ -333,11 +332,6 @@ def common_options(parser):
action="store", dest="app_port", default=APP_PORT, type=int, metavar="80",
help="Port to serve the app from."
)
- group.add_argument(
- "--app-external",
- action="store_true", dest="app_external",
- help="Serve the app outside of the proxy."
- )
group = parser.add_argument_group("Client Replay")
group.add_argument(
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py
index ddbf72b6..827bc0c0 100644
--- a/libmproxy/console/__init__.py
+++ b/libmproxy/console/__init__.py
@@ -435,7 +435,7 @@ class ConsoleMaster(flow.FlowMaster):
sys.exit(1)
if options.app:
- self.start_app(self.options.app_host, self.options.app_port, self.options.app_external)
+ self.start_app(self.options.app_host, self.options.app_port)
def start_stream(self, path):
path = os.path.expanduser(path)
diff --git a/libmproxy/controller.py b/libmproxy/controller.py
index c71088cb..b754ac36 100644
--- a/libmproxy/controller.py
+++ b/libmproxy/controller.py
@@ -108,7 +108,7 @@ class Master:
self.should_exit.clear()
self.server.start_slave(Slave, Channel(self.masterq, self.should_exit))
while not self.should_exit.is_set():
- self.tick(self.masterq)
+ self.tick(self.masterq, 0.01)
self.shutdown()
def handle(self, mtype, obj):
diff --git a/libmproxy/dump.py b/libmproxy/dump.py
index 648a76ba..d3f81780 100644
--- a/libmproxy/dump.py
+++ b/libmproxy/dump.py
@@ -10,7 +10,6 @@ class DumpError(Exception): pass
class Options(object):
attributes = [
"app",
- "app_external",
"app_host",
"app_port",
"anticache",
@@ -135,7 +134,7 @@ class DumpMaster(flow.FlowMaster):
self.add_event("Flow file corrupted. Stopped loading.", "error")
if self.o.app:
- self.start_app(self.o.app_host, self.o.app_port, self.o.app_external)
+ self.start_app(self.o.app_host, self.o.app_port)
def _readflow(self, path):
path = os.path.expanduser(path)
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 5954f6ac..c246894c 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -451,39 +451,12 @@ class FlowMaster(controller.Master):
self.stream = None
self.apps = AppRegistry()
- def start_app(self, host, port, external):
- if not external:
- self.apps.add(
- app.mapp,
- host,
- port
- )
- else:
- @app.mapp.before_request
- def patch_environ(*args, **kwargs):
- flask.request.environ["mitmproxy.master"] = self
-
- # the only absurd way to shut down a flask/werkzeug server.
- # http://flask.pocoo.org/snippets/67/
- shutdown_secret = base64.b32encode(os.urandom(30))
-
- @app.mapp.route('/shutdown/<secret>')
- def shutdown(secret):
- if secret == shutdown_secret:
- flask.request.environ.get('werkzeug.server.shutdown')()
-
- # Workaround: Monkey-patch shutdown function to stop the app.
- # Improve this when we switch werkzeugs http server for something useful.
- _shutdown = self.shutdown
- def _shutdownwrap():
- _shutdown()
- requests.get("http://%s:%s/shutdown/%s" % (host, port, shutdown_secret))
- self.shutdown = _shutdownwrap
-
- threading.Thread(target=app.mapp.run, kwargs={
- "use_reloader": False,
- "host": host,
- "port": port}).start()
+ def start_app(self, host, port):
+ self.apps.add(
+ app.mapp,
+ host,
+ port
+ )
def add_event(self, e, level="info"):
"""
diff --git a/libmproxy/web/__init__.py b/libmproxy/web/__init__.py
index 0ae155ef..815142bb 100644
--- a/libmproxy/web/__init__.py
+++ b/libmproxy/web/__init__.py
@@ -1,5 +1,6 @@
import tornado.ioloop
+import tornado.httpserver
from .. import controller, utils, flow, script, proxy
diff --git a/test/test_flow.py b/test/test_flow.py
index a297bf5f..cb899e2a 100644
--- a/test/test_flow.py
+++ b/test/test_flow.py
@@ -103,7 +103,7 @@ class TestClientPlaybackState:
q = Queue.Queue()
fm.state.clear()
- fm.tick(q)
+ fm.tick(q, timeout=0)
fm.stop_client_playback()
assert not fm.client_playback
@@ -645,7 +645,7 @@ class TestFlowMaster:
q = Queue.Queue()
assert not fm.state.flow_count()
- fm.tick(q)
+ fm.tick(q, 0)
assert fm.state.flow_count()
f.error = Error("error")
@@ -673,7 +673,7 @@ class TestFlowMaster:
fm.start_server_playback(pb, False, [], True, False)
q = Queue.Queue()
- fm.tick(q)
+ fm.tick(q, 0)
assert fm.should_exit.is_set()
fm.stop_server_playback()
diff --git a/test/tservers.py b/test/tservers.py
index 2097631e..93c8a80a 100644
--- a/test/tservers.py
+++ b/test/tservers.py
@@ -83,7 +83,6 @@ class ProxTestBase(object):
no_upstream_cert = False
authenticator = None
masterclass = TestMaster
- externalapp = False
certforward = False
@classmethod
@@ -94,7 +93,7 @@ class ProxTestBase(object):
cls.config = ProxyConfig(**cls.get_proxy_config())
tmaster = cls.masterclass(cls.config)
- tmaster.start_app(APP_HOST, APP_PORT, cls.externalapp)
+ tmaster.start_app(APP_HOST, APP_PORT)
cls.proxy = ProxyThread(tmaster)
cls.proxy.start()