aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/options.py4
-rw-r--r--mitmproxy/tools/cmdline.py1
-rw-r--r--mitmproxy/tools/console/commands.py1
-rw-r--r--mitmproxy/tools/console/eventlog.py1
-rw-r--r--mitmproxy/tools/console/flowlist.py1
-rw-r--r--mitmproxy/tools/console/flowview.py1
-rw-r--r--mitmproxy/tools/console/grideditor/editors.py14
-rw-r--r--mitmproxy/tools/console/help.py1
-rw-r--r--mitmproxy/tools/console/options.py1
-rw-r--r--mitmproxy/tools/console/window.py33
10 files changed, 46 insertions, 12 deletions
diff --git a/mitmproxy/options.py b/mitmproxy/options.py
index 59d44a5d..db276a51 100644
--- a/mitmproxy/options.py
+++ b/mitmproxy/options.py
@@ -386,6 +386,10 @@ class Options(optmanager.OptManager):
choices=sorted(console_layouts),
)
self.add_option(
+ "console_layout_headers", bool, True,
+ "Show layout comonent headers",
+ )
+ self.add_option(
"console_focus_follow", bool, False,
"Focus follows new flows."
)
diff --git a/mitmproxy/tools/cmdline.py b/mitmproxy/tools/cmdline.py
index 5711ce73..97b04e74 100644
--- a/mitmproxy/tools/cmdline.py
+++ b/mitmproxy/tools/cmdline.py
@@ -109,6 +109,7 @@ def mitmproxy(opts):
common_options(parser, opts)
opts.make_parser(parser, "console_layout")
+ opts.make_parser(parser, "console_layout_headers")
group = parser.add_argument_group(
"Filters",
"See help in mitmproxy for filter expression syntax."
diff --git a/mitmproxy/tools/console/commands.py b/mitmproxy/tools/console/commands.py
index 76827a99..ca6e6dfe 100644
--- a/mitmproxy/tools/console/commands.py
+++ b/mitmproxy/tools/console/commands.py
@@ -152,6 +152,7 @@ class CommandHelp(urwid.Frame):
class Commands(urwid.Pile):
+ title = "Commands"
keyctx = "commands"
def __init__(self, master):
diff --git a/mitmproxy/tools/console/eventlog.py b/mitmproxy/tools/console/eventlog.py
index f5f48f88..c56b80d3 100644
--- a/mitmproxy/tools/console/eventlog.py
+++ b/mitmproxy/tools/console/eventlog.py
@@ -10,6 +10,7 @@ class LogBufferWalker(urwid.SimpleListWalker):
class EventLog(urwid.ListBox):
keyctx = "eventlog"
+ title = "Events"
def __init__(self, master):
self.walker = LogBufferWalker([])
diff --git a/mitmproxy/tools/console/flowlist.py b/mitmproxy/tools/console/flowlist.py
index c28f991b..cb0aa1bd 100644
--- a/mitmproxy/tools/console/flowlist.py
+++ b/mitmproxy/tools/console/flowlist.py
@@ -110,6 +110,7 @@ class FlowListWalker(urwid.ListWalker):
class FlowListBox(urwid.ListBox):
+ title = "Flows"
keyctx = "flowlist"
def __init__(
diff --git a/mitmproxy/tools/console/flowview.py b/mitmproxy/tools/console/flowview.py
index 00951610..58308efb 100644
--- a/mitmproxy/tools/console/flowview.py
+++ b/mitmproxy/tools/console/flowview.py
@@ -276,6 +276,7 @@ class FlowDetails(tabs.Tabs):
class FlowView(urwid.Frame):
keyctx = "flowview"
+ title = "Flow Details"
def __init__(self, master):
super().__init__(
diff --git a/mitmproxy/tools/console/grideditor/editors.py b/mitmproxy/tools/console/grideditor/editors.py
index 671e91fb..cd3c2c40 100644
--- a/mitmproxy/tools/console/grideditor/editors.py
+++ b/mitmproxy/tools/console/grideditor/editors.py
@@ -16,7 +16,7 @@ from mitmproxy.net.http import Headers
class QueryEditor(base.FocusEditor):
- title = "Editing query"
+ title = "Edit Query"
columns = [
col_text.Column("Key"),
col_text.Column("Value")
@@ -71,7 +71,7 @@ class HeaderEditor(base.FocusEditor):
class RequestHeaderEditor(HeaderEditor):
- title = "Editing request headers"
+ title = "Edit Request Headers"
def get_data(self, flow):
return flow.request.headers.fields
@@ -81,7 +81,7 @@ class RequestHeaderEditor(HeaderEditor):
class ResponseHeaderEditor(HeaderEditor):
- title = "Editing response headers"
+ title = "Edit Response Headers"
def get_data(self, flow):
return flow.response.headers.fields
@@ -91,7 +91,7 @@ class ResponseHeaderEditor(HeaderEditor):
class RequestFormEditor(base.FocusEditor):
- title = "Editing URL-encoded form"
+ title = "Edit URL-encoded Form"
columns = [
col_text.Column("Key"),
col_text.Column("Value")
@@ -157,7 +157,7 @@ class SetHeadersEditor(base.GridEditor):
class PathEditor(base.FocusEditor):
# TODO: Next row on enter?
- title = "Editing URL path components"
+ title = "Edit Path Components"
columns = [
col_text.Column("Component"),
]
@@ -208,7 +208,7 @@ class HostPatternEditor(base.GridEditor):
class CookieEditor(base.FocusEditor):
- title = "Editing request Cookie header"
+ title = "Edit Cookies"
columns = [
col_text.Column("Name"),
col_text.Column("Value"),
@@ -242,7 +242,7 @@ class CookieAttributeEditor(base.GridEditor):
class SetCookieEditor(base.FocusEditor):
- title = "Editing response SetCookie header"
+ title = "Edit SetCookie Header"
columns = [
col_text.Column("Name"),
col_text.Column("Value"),
diff --git a/mitmproxy/tools/console/help.py b/mitmproxy/tools/console/help.py
index ec0c95d9..da8f701c 100644
--- a/mitmproxy/tools/console/help.py
+++ b/mitmproxy/tools/console/help.py
@@ -14,6 +14,7 @@ footer = [
class HelpView(urwid.ListBox):
+ title = "Help"
keyctx = "help"
def __init__(self, help_context):
diff --git a/mitmproxy/tools/console/options.py b/mitmproxy/tools/console/options.py
index fee61fe5..124a3f93 100644
--- a/mitmproxy/tools/console/options.py
+++ b/mitmproxy/tools/console/options.py
@@ -264,6 +264,7 @@ class OptionHelp(urwid.Frame):
class Options(urwid.Pile):
+ title = "Options"
keyctx = "options"
def __init__(self, master):
diff --git a/mitmproxy/tools/console/window.py b/mitmproxy/tools/console/window.py
index ea5b7f3b..964429df 100644
--- a/mitmproxy/tools/console/window.py
+++ b/mitmproxy/tools/console/window.py
@@ -11,6 +11,17 @@ from mitmproxy.tools.console import grideditor
from mitmproxy.tools.console import eventlog
+class Header(urwid.Frame):
+ def __init__(self, widget, title, focus):
+ super().__init__(
+ widget,
+ header = urwid.AttrWrap(
+ urwid.Text(title),
+ "heading" if focus else "heading_inactive"
+ )
+ )
+
+
class WindowStack:
def __init__(self, master, base):
self.master = master
@@ -90,6 +101,7 @@ class Window(urwid.Frame):
signals.push_view_state.connect(self.push)
self.master.options.subscribe(self.configure, ["console_layout"])
+ self.master.options.subscribe(self.configure, ["console_layout_headers"])
self.pane = 0
self.stacks = [
WindowStack(master, "flowlist"),
@@ -107,21 +119,31 @@ class Window(urwid.Frame):
Redraw the layout.
"""
c = self.master.options.console_layout
+ if c == "single":
+ self.pane = 0
+
+ def wrap(w, idx):
+ if self.master.options.console_layout_headers and hasattr(w, "title"):
+ return Header(w, w.title, self.pane == idx)
+ else:
+ return w
w = None
if c == "single":
- w = self.stacks[0].top()
+ w = wrap(self.stacks[0].top(), 0)
elif c == "vertical":
w = urwid.Pile(
- [i.top() for i in self.stacks]
+ [
+ wrap(s.top(), i) for i, s in enumerate(self.stacks)
+ ]
)
else:
w = urwid.Columns(
- [i.top() for i in self.stacks], dividechars=1
+ [wrap(s.top(), i) for i, s in enumerate(self.stacks)],
+ dividechars=1
)
+
self.body = urwid.AttrWrap(w, "background")
- if c == "single":
- self.pane = 0
def flow_changed(self, sender, flow):
if self.master.view.focus.flow:
@@ -200,6 +222,7 @@ class Window(urwid.Frame):
self.pane = 0
else:
self.pane = (self.pane + 1) % len(self.stacks)
+ self.refresh()
def mouse_event(self, *args, **kwargs):
# args: (size, event, button, col, row)