aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/flow.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-01-18 17:25:59 +0100
committerMaximilian Hils <git@maximilianhils.com>2014-01-18 17:25:59 +0100
commit0b4ad05e02d2d8d4d7329e731ebf52ad5cd20043 (patch)
tree8f80e441b68bba052f4e91d4ac44e43297a8750f /libmproxy/flow.py
parent6c24b1d0d2c3a2860d427e84e30d6022b6500320 (diff)
parent5acbef236c503bf973a5782dd0139efa977824ea (diff)
downloadmitmproxy-0b4ad05e02d2d8d4d7329e731ebf52ad5cd20043.tar.gz
mitmproxy-0b4ad05e02d2d8d4d7329e731ebf52ad5cd20043.tar.bz2
mitmproxy-0b4ad05e02d2d8d4d7329e731ebf52ad5cd20043.zip
merge master
Diffstat (limited to 'libmproxy/flow.py')
-rw-r--r--libmproxy/flow.py66
1 files changed, 11 insertions, 55 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 5e3ad8e9..2dd1359a 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -143,39 +143,6 @@ class SetHeaders:
f.request.headers.add(header, value)
-class ScriptContext:
- def __init__(self, master):
- self._master = master
-
- def log(self, *args, **kwargs):
- """
- Logs an event.
-
- How this is handled depends on the front-end. mitmdump will display
- events if the eventlog flag ("-e") was passed. mitmproxy sends
- output to the eventlog for display ("v" keyboard shortcut).
- """
- self._master.add_event(*args, **kwargs)
-
- def duplicate_flow(self, f):
- """
- Returns a duplicate of the specified flow. The flow is also
- injected into the current state, and is ready for editing, replay,
- etc.
- """
- self._master.pause_scripts = True
- f = self._master.duplicate_flow(f)
- self._master.pause_scripts = False
- return f
-
- def replay_request(self, f):
- """
- Replay the request on the current flow. The response will be added
- to the flow object.
- """
- self._master.replay_request(f)
-
-
class decoded(object):
"""
@@ -1426,31 +1393,21 @@ class FlowMaster(controller.Master):
"""
pass
- def get_script(self, script_argv):
- """
- Returns an (error, script) tuple.
- """
- s = script.Script(script_argv, ScriptContext(self))
- try:
- s.load()
- except script.ScriptError, v:
- return (v.args[0], None)
- return (None, s)
+ def unload_scripts(self):
+ for script in self.scripts[:]:
+ script.unload()
+ self.scripts.remove(script)
- def unload_script(self,script):
- 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.
"""
- r = self.get_script(script_argv)
- if r[0]:
- return r[0]
- else:
- self.scripts.append(r[1])
+ try:
+ s = script.Script(command, self)
+ except script.ScriptError, v:
+ return v.args[0]
+ self.scripts.append(s)
def run_single_script_hook(self, script, name, *args, **kwargs):
if script and not self.pause_scripts:
@@ -1670,8 +1627,7 @@ class FlowMaster(controller.Master):
return f
def shutdown(self):
- for script in self.scripts:
- self.unload_script(script)
+ self.unload_scripts()
controller.Master.shutdown(self)
if self.stream:
for i in self.state._flow_list: