From 42d4a2fae96b8b4ba35d3a88e20f278d79a0ccc6 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 12 Jan 2014 23:01:59 +1300 Subject: Script refactoring: move script command parsing into script module. --- libmproxy/cmdline.py | 2 +- libmproxy/console/__init__.py | 18 +++++++++--------- libmproxy/dump.py | 4 ++-- libmproxy/flow.py | 4 ++-- libmproxy/script.py | 8 ++++---- 5 files changed, 18 insertions(+), 18 deletions(-) (limited to 'libmproxy') diff --git a/libmproxy/cmdline.py b/libmproxy/cmdline.py index 5114f371..388607af 100644 --- a/libmproxy/cmdline.py +++ b/libmproxy/cmdline.py @@ -209,7 +209,7 @@ def common_options(parser): ) parser.add_argument( "-s", - action="append", type=lambda x: shlex.split(x,posix=(os.name != "nt")), dest="scripts", default=[], + action="append", type=str, dest="scripts", default=[], metavar='"script.py --bar"', help="Run a script. Surround with quotes to pass script arguments. Can be passed multiple times." ) diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py index f68084ff..536b0bac 100644 --- a/libmproxy/console/__init__.py +++ b/libmproxy/console/__init__.py @@ -442,13 +442,13 @@ class ConsoleMaster(flow.FlowMaster): else: self.add_event("Method %s error: %s"%(method, val[1])) - def run_script_once(self, path, f): - if not path: + def run_script_once(self, command, f): + if not command: return - self.add_event("Running script on flow: %s"%path) + self.add_event("Running script on flow: %s"%command) try: - s = script.Script(shlex.split(path, posix=(os.name != "nt")), self) + s = script.Script(command, self) except script.ScriptError, v: self.statusbar.message("Error loading script.") self.add_event("Error loading script:\n%s"%v.args[0]) @@ -462,15 +462,15 @@ class ConsoleMaster(flow.FlowMaster): self._run_script_method("error", s, f) s.unload() self.refresh_flow(f) - self.state.last_script = path + self.state.last_script = command - def set_script(self, path): - if not path: + def set_script(self, command): + if not command: return - ret = self.load_script(path) + ret = self.load_script(command) if ret: self.statusbar.message(ret) - self.state.last_script = path + self.state.last_script = command def toggle_eventlog(self): self.eventlog = not self.eventlog diff --git a/libmproxy/dump.py b/libmproxy/dump.py index 83139b46..e76ea1ce 100644 --- a/libmproxy/dump.py +++ b/libmproxy/dump.py @@ -111,8 +111,8 @@ class DumpMaster(flow.FlowMaster): ) scripts = options.scripts or [] - for script_argv in scripts: - err = self.load_script(script_argv) + for command in scripts: + err = self.load_script(command) if err: raise DumpError(err) diff --git a/libmproxy/flow.py b/libmproxy/flow.py index 0aa03198..e0013f1e 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -1398,13 +1398,13 @@ class FlowMaster(controller.Master): script.unload() self.scripts.remove(script) - def load_script(self, script_argv): + def load_script(self, command): """ Loads a script. Returns an error description if something went wrong. """ try: - s = script.Script(script_argv, self) + s = script.Script(command, self) except script.ScriptError, v: return v.args[0] self.scripts.append(s) diff --git a/libmproxy/script.py b/libmproxy/script.py index 747d1567..a80f4694 100644 --- a/libmproxy/script.py +++ b/libmproxy/script.py @@ -1,4 +1,4 @@ -import os, traceback, threading +import os, traceback, threading, shlex import controller class ScriptError(Exception): @@ -45,8 +45,9 @@ class Script: s = Script(argv, master) s.load() """ - def __init__(self, argv, master): - self.argv = argv + def __init__(self, command, master): + self.command = command + self.argv = shlex.split(command, posix=(os.name != "nt")) self.ctx = ScriptContext(master) self.ns = None self.load() @@ -99,7 +100,6 @@ class Script: def _handle_concurrent_reply(fn, o, args=[], kwargs={}): reply = o.reply o.reply = controller.DummyReply() - def run(): fn(*args, **kwargs) reply(o) -- cgit v1.2.3