aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console/flowlist.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy/console/flowlist.py')
-rw-r--r--libmproxy/console/flowlist.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/libmproxy/console/flowlist.py b/libmproxy/console/flowlist.py
index 102fa7b9..9e7c6d69 100644
--- a/libmproxy/console/flowlist.py
+++ b/libmproxy/console/flowlist.py
@@ -1,5 +1,6 @@
from __future__ import absolute_import
import urwid
+from netlib import http
from . import common
def _mkhelp():
@@ -7,13 +8,16 @@ def _mkhelp():
keys = [
("A", "accept all intercepted flows"),
("a", "accept this intercepted flow"),
+ ("b", "save request/response body"),
("C", "clear flow list or eventlog"),
("d", "delete flow"),
("D", "duplicate flow"),
("e", "toggle eventlog"),
("F", "toggle follow flow list"),
+ ("g", "copy flow to clipboard"),
("l", "set limit filter pattern"),
("L", "load saved flows"),
+ ("n", "create a new request"),
("r", "replay request"),
("V", "revert changes to request"),
("w", "save flows "),
@@ -204,6 +208,10 @@ class ConnectionItem(common.WWrap):
self.master.run_script_once,
self.flow
)
+ elif key == "g":
+ common.ask_copy_part("a", self.flow, self.master, self.state)
+ elif key == "b":
+ common.ask_save_body(None, self.master, self.state, self.flow)
else:
return key
@@ -239,6 +247,32 @@ class FlowListBox(urwid.ListBox):
self.master = master
urwid.ListBox.__init__(self, master.flow_list_walker)
+ def get_method_raw(self, k):
+ if k:
+ self.get_url(k)
+
+ def get_method(self, k):
+ if k == "e":
+ self.master.prompt("Method:", "", self.get_method_raw)
+ else:
+ method = ""
+ for i in common.METHOD_OPTIONS:
+ if i[1] == k:
+ method = i[0].upper()
+ self.get_url(method)
+
+ def get_url(self,method):
+ self.master.prompt("URL:", "http://www.example.com/", self.new_request, method)
+
+ def new_request(self, url, method):
+ parts = http.parse_url(str(url))
+ if not parts:
+ self.master.statusbar.message("Invalid Url")
+ return
+ scheme, host, port, path = parts
+ f = self.master.create_request(method, scheme, host, port, path)
+ self.master.view_flow(f)
+
def keypress(self, size, key):
key = common.shortcuts(key)
if key == "A":
@@ -256,6 +290,8 @@ class FlowListBox(urwid.ListBox):
self.master.state.last_saveload,
self.master.load_flows_callback
)
+ elif key == "n":
+ self.master.prompt_onekey("Method", common.METHOD_OPTIONS, self.get_method)
elif key == "F":
self.master.toggle_follow_flows()
elif key == "W":