aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-02-19 00:17:47 +1300
committerAldo Cortesi <aldo@nullcube.com>2012-02-19 00:17:47 +1300
commitd32d6bc5e3cafaa51556da0690f6835cd1b319dc (patch)
treed5aa1af673c45ce8f12b0993740573b7777c3281 /libmproxy
parent8ddc3b4ef275d70cdbc9bc49add02ea21cca3583 (diff)
downloadmitmproxy-d32d6bc5e3cafaa51556da0690f6835cd1b319dc.tar.gz
mitmproxy-d32d6bc5e3cafaa51556da0690f6835cd1b319dc.tar.bz2
mitmproxy-d32d6bc5e3cafaa51556da0690f6835cd1b319dc.zip
Add "p" key binding to connection list view to copy a flow.
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/console/connlist.py4
-rw-r--r--libmproxy/flow.py8
2 files changed, 12 insertions, 0 deletions
diff --git a/libmproxy/console/connlist.py b/libmproxy/console/connlist.py
index 957e797b..177c64e7 100644
--- a/libmproxy/console/connlist.py
+++ b/libmproxy/console/connlist.py
@@ -11,6 +11,7 @@ def _mkhelp():
("e", "toggle eventlog"),
("l", "set limit filter pattern"),
("L", "load saved flows"),
+ ("p", "duplicate flow"),
("r", "replay request"),
("R", "revert changes to request"),
("w", "save all flows matching current limit"),
@@ -110,6 +111,9 @@ class ConnectionItem(common.WWrap):
self.state.last_saveload,
self.master.load_flows_callback
)
+ elif key == "p":
+ f = self.master.duplicate_flow(self.flow)
+ self.master.conn_list_view.set_focus(self.state.index(f))
elif key == "r":
r = self.master.replay_request(self.flow)
if r:
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 8ce25c5c..db4cde5e 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -856,8 +856,10 @@ class Flow:
f = Flow(rc)
if self.response:
f.response = self.response.copy()
+ f.response.request = rc
if self.error:
f.error = self.error.copy()
+ f.error.request = rc
return f
@classmethod
@@ -1006,6 +1008,9 @@ class State(object):
def flow_count(self):
return len(self._flow_map)
+ def index(self, f):
+ return self._flow_list.index(f)
+
def active_flow_count(self):
c = 0
for i in self._flow_list:
@@ -1249,6 +1254,9 @@ class FlowMaster(controller.Master):
return self.load_flow(f.copy())
def load_flow(self, f):
+ """
+ Loads a flow, and returns a new flow object.
+ """
if f.request:
fr = self.handle_request(f.request)
if f.response: