aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/builtins/script.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/builtins/script.py')
-rw-r--r--mitmproxy/builtins/script.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/mitmproxy/builtins/script.py b/mitmproxy/builtins/script.py
index ae1d1b91..1ebec873 100644
--- a/mitmproxy/builtins/script.py
+++ b/mitmproxy/builtins/script.py
@@ -10,6 +10,7 @@ import traceback
from mitmproxy import exceptions
from mitmproxy import controller
from mitmproxy import ctx
+from mitmproxy.flow import master as flowmaster
import watchdog.events
@@ -67,7 +68,11 @@ def scriptenv(path, args):
tb = tb.tb_next
if not os.path.abspath(s[0]).startswith(scriptdir):
break
- ctx.log.error("Script error: %s" % "".join(traceback.format_exception(etype, value, tb)))
+ ctx.log.error(
+ "Script error: %s" % "".join(
+ traceback.format_exception(etype, value, tb)
+ )
+ )
finally:
sys.argv = oldargs
sys.path.pop()
@@ -189,6 +194,15 @@ class ScriptLoader():
"""
An addon that manages loading scripts from options.
"""
+ def run_once(self, command, flows):
+ sc = Script(command)
+ sc.load_script()
+ for f in flows:
+ for evt, o in flowmaster.event_sequence(f):
+ sc.run(evt, o)
+ sc.done()
+ return sc
+
def configure(self, options, updated):
if "scripts" in updated:
for s in options.scripts: