aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-01-27 15:14:46 +1300
committerAldo Cortesi <aldo@nullcube.com>2011-01-27 15:16:03 +1300
commitedab82f7d8833f1903a4032fab5b530c6096fc07 (patch)
treef64bc0e1e011060978e8e65729c2ffc96a50dce6 /libmproxy/console.py
parent345ac0f2a0b641971bdc79463cad9259e4c48197 (diff)
downloadmitmproxy-edab82f7d8833f1903a4032fab5b530c6096fc07.tar.gz
mitmproxy-edab82f7d8833f1903a4032fab5b530c6096fc07.tar.bz2
mitmproxy-edab82f7d8833f1903a4032fab5b530c6096fc07.zip
Add command to write request or response body to file.
Diffstat (limited to 'libmproxy/console.py')
-rw-r--r--libmproxy/console.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/libmproxy/console.py b/libmproxy/console.py
index 7e3639d9..6c5a051e 100644
--- a/libmproxy/console.py
+++ b/libmproxy/console.py
@@ -282,6 +282,21 @@ class ConnectionView(WWrap):
self.flow.request.method = i[0].upper()
self.master.refresh_connection(self.flow)
+ def save_body(self, path):
+ if not path:
+ return
+ if self.viewing == self.REQ:
+ c = self.flow.request
+ else:
+ c = self.flow.response
+ path = os.path.expanduser(path)
+ try:
+ f = file(path, "wb")
+ f.write(str(c.content))
+ f.close()
+ except IOError, v:
+ self.master.statusbar.message(str(v))
+
def edit(self, part):
if self.viewing == self.REQ:
conn = self.flow.request
@@ -391,6 +406,11 @@ class ConnectionView(WWrap):
self.master.ui._curs_set(1)
self.master.ui.clear()
os.unlink(name)
+ elif key == "w":
+ if self.viewing == self.REQ:
+ self.master.prompt("Save request body: ", self.save_body)
+ else:
+ self.master.prompt("Save response body: ", self.save_body)
return key
@@ -815,6 +835,7 @@ class ConsoleMaster(controller.Master):
("e", "edit response/request"),
("s", "save this flow"),
("v", "view contents in external viewer"),
+ ("w", "save request or response body"),
("tab", "toggle response/request view"),
]
text.extend(format_keyvals(keys, key="key", val="text", indent=4))