aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorUjjwal Verma <ujjwalverma1111@gmail.com>2017-02-03 01:35:53 +0530
committerUjjwal Verma <ujjwalverma1111@gmail.com>2017-02-03 01:35:53 +0530
commit11b4b3209d734e2cbde84200ed3e0dd5a2b72436 (patch)
tree5c4e819a231585d1bf2fdacc2668f074340f2ebe /mitmproxy
parent79aa99427550e738007e8b87d41e5c097cd06c46 (diff)
downloadmitmproxy-11b4b3209d734e2cbde84200ed3e0dd5a2b72436.tar.gz
mitmproxy-11b4b3209d734e2cbde84200ed3e0dd5a2b72436.tar.bz2
mitmproxy-11b4b3209d734e2cbde84200ed3e0dd5a2b72436.zip
Closes #1960 'Z' removes unmarked flows
Diffstat (limited to 'mitmproxy')
-rw-r--r--mitmproxy/addons/view.py11
-rw-r--r--mitmproxy/tools/console/flowlist.py3
2 files changed, 14 insertions, 0 deletions
diff --git a/mitmproxy/addons/view.py b/mitmproxy/addons/view.py
index 8358a045..d2ab75f3 100644
--- a/mitmproxy/addons/view.py
+++ b/mitmproxy/addons/view.py
@@ -230,6 +230,17 @@ class View(collections.Sequence):
self.sig_view_refresh.send(self)
self.sig_store_refresh.send(self)
+ def clear_not_marked(self):
+ """
+ Clears only the unmarked flows.
+ """
+ for flow in self._store.copy().values():
+ if not flow.marked:
+ self._store.pop(flow.id)
+
+ self._refilter()
+ self.sig_store_refresh.send(self)
+
def add(self, f: mitmproxy.flow.Flow) -> bool:
"""
Adds a flow to the state. If the flow already exists, it is
diff --git a/mitmproxy/tools/console/flowlist.py b/mitmproxy/tools/console/flowlist.py
index b26289af..39811ce1 100644
--- a/mitmproxy/tools/console/flowlist.py
+++ b/mitmproxy/tools/console/flowlist.py
@@ -35,6 +35,7 @@ def _mkhelp():
("W", "stream flows to file"),
("X", "kill and delete flow, even if it's mid-intercept"),
("z", "clear flow list or eventlog"),
+ ("Z", "clear unmarked flows"),
("tab", "tab between eventlog and flow list"),
("enter", "view flow"),
("|", "run script on this flow"),
@@ -354,6 +355,8 @@ class FlowListBox(urwid.ListBox):
self.master.view.update(f)
elif key == "z":
self.master.view.clear()
+ elif key == "Z":
+ self.master.view.clear_not_marked()
elif key == "e":
self.master.toggle_eventlog()
elif key == "g":