aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-10-30 17:57:43 +1300
committerAldo Cortesi <aldo@nullcube.com>2016-10-30 17:57:43 +1300
commitf08b57fb9bd03f2abf1a4f11d0d01ffc50e3582c (patch)
treeca53461260c0b78725e9295b80e5fb0fee1a8bf1
parenta67a5918939a1dd4e5374d79b42885f3c7e106ef (diff)
downloadmitmproxy-f08b57fb9bd03f2abf1a4f11d0d01ffc50e3582c.tar.gz
mitmproxy-f08b57fb9bd03f2abf1a4f11d0d01ffc50e3582c.tar.bz2
mitmproxy-f08b57fb9bd03f2abf1a4f11d0d01ffc50e3582c.zip
console: "v" to reverse flow order
-rw-r--r--mitmproxy/addons/view.py6
-rw-r--r--mitmproxy/tools/console/flowlist.py4
-rw-r--r--mitmproxy/tools/console/master.py2
-rw-r--r--test/mitmproxy/addons/test_view.py17
4 files changed, 23 insertions, 6 deletions
diff --git a/mitmproxy/addons/view.py b/mitmproxy/addons/view.py
index 8bbbf0f1..b4ba2315 100644
--- a/mitmproxy/addons/view.py
+++ b/mitmproxy/addons/view.py
@@ -129,8 +129,8 @@ class View(collections.Sequence):
self.show_marked = not self.show_marked
self._refilter()
- def toggle_reversed(self):
- self.order_reversed = not self.order_reversed
+ def set_reversed(self, value: bool):
+ self.order_reversed = value
self.sig_refresh.send(self)
def set_order(self, order_key: typing.Callable):
@@ -220,6 +220,8 @@ class View(collections.Sequence):
raise exceptions.OptionsError(
"Unknown flow order: %s" % opts.order
)
+ if "order_reversed" in updated:
+ self.set_reversed(opts.order_reversed)
def request(self, f):
self.add(f)
diff --git a/mitmproxy/tools/console/flowlist.py b/mitmproxy/tools/console/flowlist.py
index bc4392ec..a0a3dc94 100644
--- a/mitmproxy/tools/console/flowlist.py
+++ b/mitmproxy/tools/console/flowlist.py
@@ -29,6 +29,7 @@ def _mkhelp():
("r", "replay request"),
("S", "server replay request/s"),
("U", "unmark all marked flows"),
+ ("v", "reverse flow order"),
("V", "revert changes to request"),
("w", "save flows "),
("W", "stream flows to file"),
@@ -219,6 +220,9 @@ class FlowItem(urwid.WidgetWrap):
for f in self.master.view:
f.marked = False
signals.flowlist_change.send(self)
+ elif key == "v":
+ val = not self.master.options.order_reversed
+ self.master.options.order_reversed = val
elif key == "V":
if not self.flow.modified():
signals.status_message.send(message="Flow not modified.")
diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py
index 8109888c..932dc151 100644
--- a/mitmproxy/tools/console/master.py
+++ b/mitmproxy/tools/console/master.py
@@ -52,6 +52,7 @@ class Options(mitmproxy.options.Options):
no_mouse: bool = False,
follow_focus: bool = False,
order: Optional[str] = None,
+ order_reversed: bool = False,
**kwargs
):
self.eventlog = eventlog
@@ -63,6 +64,7 @@ class Options(mitmproxy.options.Options):
self.no_mouse = no_mouse
self.follow_focus = follow_focus
self.order = order
+ self.order_reversed = order_reversed
super().__init__(**kwargs)
diff --git a/test/mitmproxy/addons/test_view.py b/test/mitmproxy/addons/test_view.py
index a05dc60c..750e8469 100644
--- a/test/mitmproxy/addons/test_view.py
+++ b/test/mitmproxy/addons/test_view.py
@@ -77,13 +77,13 @@ def test_order():
v.set_order(view.key_request_method)
assert [i.request.method for i in v] == ["GET", "GET", "PUT", "PUT"]
- v.toggle_reversed()
+ v.set_reversed(True)
assert [i.request.method for i in v] == ["PUT", "PUT", "GET", "GET"]
v.set_order(view.key_request_start)
assert [i.request.timestamp_start for i in v] == [4, 3, 2, 1]
- v.toggle_reversed()
+ v.set_reversed(False)
assert [i.request.timestamp_start for i in v] == [1, 2, 3, 4]
@@ -92,7 +92,7 @@ def test_reversed():
v.request(tft(start=1))
v.request(tft(start=2))
v.request(tft(start=3))
- v.toggle_reversed()
+ v.set_reversed(True)
assert v[0].request.timestamp_start == 3
assert v[-1].request.timestamp_start == 1
@@ -266,9 +266,16 @@ def test_settings():
class Options(options.Options):
- def __init__(self, *, filter=None, order=None, **kwargs):
+ def __init__(
+ self, *,
+ filter=None,
+ order=None,
+ order_reversed=False,
+ **kwargs
+ ):
self.filter = filter
self.order = order
+ self.order_reversed = order_reversed
super().__init__(**kwargs)
@@ -280,3 +287,5 @@ def test_configure():
tctx.configure(v, order="method")
tutils.raises("unknown flow order", tctx.configure, v, order="no")
+
+ tctx.configure(v, order_reversed=True)