aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/script
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-03-19 19:53:27 +0100
committerMaximilian Hils <git@maximilianhils.com>2016-03-19 19:53:27 +0100
commitc52c59f8581418934ac15a0510fcf3639125e508 (patch)
treed41a5a85da411e48d064cceacf40f555c8679e73 /mitmproxy/script
parent4be9074b492ec49a4ddd163be72ed835e8feb6f3 (diff)
downloadmitmproxy-c52c59f8581418934ac15a0510fcf3639125e508.tar.gz
mitmproxy-c52c59f8581418934ac15a0510fcf3639125e508.tar.bz2
mitmproxy-c52c59f8581418934ac15a0510fcf3639125e508.zip
port mitmproxy.scripts to py3
Diffstat (limited to 'mitmproxy/script')
-rw-r--r--mitmproxy/script/concurrent.py4
-rw-r--r--mitmproxy/script/script.py23
2 files changed, 20 insertions, 7 deletions
diff --git a/mitmproxy/script/concurrent.py b/mitmproxy/script/concurrent.py
index f0f5e3cd..57ee37de 100644
--- a/mitmproxy/script/concurrent.py
+++ b/mitmproxy/script/concurrent.py
@@ -47,7 +47,7 @@ class ScriptThread(threading.Thread):
def concurrent(fn):
- if fn.func_name in (
+ if fn.__name__ in (
"request",
"response",
"error",
@@ -60,4 +60,4 @@ def concurrent(fn):
return _concurrent
raise NotImplementedError(
- "Concurrent decorator not supported for '%s' method." % fn.func_name)
+ "Concurrent decorator not supported for '%s' method." % fn.__name__)
diff --git a/mitmproxy/script/script.py b/mitmproxy/script/script.py
index edc17d43..f142daca 100644
--- a/mitmproxy/script/script.py
+++ b/mitmproxy/script/script.py
@@ -8,6 +8,9 @@ import os
import shlex
import traceback
import sys
+
+import six
+
from ..exceptions import ScriptException
@@ -40,7 +43,8 @@ class Script(object):
def parse_command(command):
if not command or not command.strip():
raise ScriptException("Empty script command.")
- if os.name == "nt": # Windows: escape all backslashes in the path.
+ # Windows: escape all backslashes in the path.
+ if os.name == "nt": # pragma: no cover
backslashes = shlex.split(command, posix=False)[0].count("\\")
command = command.replace("\\", "\\\\", backslashes)
args = shlex.split(command) # pragma: nocover
@@ -71,10 +75,15 @@ class Script(object):
self.ns = {'__file__': os.path.abspath(self.args[0])}
sys.path.append(script_dir)
try:
- execfile(self.args[0], self.ns, self.ns)
+ with open(self.filename) as f:
+ code = compile(f.read(), self.filename, 'exec')
+ exec (code, self.ns, self.ns)
except Exception as e:
- # Python 3: use exception chaining, https://www.python.org/dev/peps/pep-3134/
- raise ScriptException(traceback.format_exc(e))
+ six.reraise(
+ ScriptException,
+ ScriptException(str(e)),
+ sys.exc_info()[2]
+ )
finally:
sys.path.pop()
return self.run("start", self.args)
@@ -103,6 +112,10 @@ class Script(object):
try:
return f(self.ctx, *args, **kwargs)
except Exception as e:
- raise ScriptException(traceback.format_exc(e))
+ six.reraise(
+ ScriptException,
+ ScriptException(str(e)),
+ sys.exc_info()[2]
+ )
else:
return None