mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 00:01:36 +00:00
Rejigger status bar somewhat. Add indicators for various bits of state.
In particular, we now display limits, sticky cookie expressions and intercepts in the bar.
This commit is contained in:
parent
3ef9d2cffc
commit
ef27e2fb29
@ -228,7 +228,6 @@ VIEW_FLOW_RESPONSE = 1
|
||||
class ConnectionView(WWrap):
|
||||
REQ = 0
|
||||
RESP = 1
|
||||
tabs = ["Request", "Response"]
|
||||
methods = [
|
||||
("get", "g"),
|
||||
("post", "p"),
|
||||
@ -658,37 +657,59 @@ class ActionBar(WWrap):
|
||||
|
||||
|
||||
class StatusBar(WWrap):
|
||||
def __init__(self, master, text):
|
||||
self.master, self.text = master, text
|
||||
def __init__(self, master, helptext):
|
||||
self.master, self.helptext = master, helptext
|
||||
self.expire = None
|
||||
self.ab = ActionBar()
|
||||
self.ib = urwid.AttrWrap(urwid.Text(""), 'foot')
|
||||
self.ib = WWrap(urwid.Text(""))
|
||||
self.w = urwid.Pile([self.ib, self.ab])
|
||||
|
||||
def get_status(self):
|
||||
r = []
|
||||
|
||||
if self.master.state.intercept_txt:
|
||||
r.append("[")
|
||||
r.append(("statusbar_highlight", "i"))
|
||||
r.append(":%s]"%self.master.state.intercept_txt)
|
||||
if self.master.state.limit_txt:
|
||||
r.append("[")
|
||||
r.append(("statusbar_highlight", "l"))
|
||||
r.append(":%s]"%self.master.state.limit_txt)
|
||||
if self.master.stickycookie_txt:
|
||||
r.append("[")
|
||||
r.append(("statusbar_highlight", "t"))
|
||||
r.append(":%s]"%self.master.stickycookie_txt)
|
||||
|
||||
|
||||
return r
|
||||
|
||||
def redraw(self):
|
||||
if self.expire and time.time() > self.expire:
|
||||
self.message("")
|
||||
status = urwid.Columns([
|
||||
urwid.Text(
|
||||
[
|
||||
(
|
||||
'title',
|
||||
"mitmproxy %s:%s"%(self.master.server.address, self.master.server.port)
|
||||
)
|
||||
|
||||
t = [
|
||||
('statusbar_text', ("[%s]"%len(self.master.state.flow_list)).ljust(7)),
|
||||
]
|
||||
),
|
||||
t.extend(self.get_status())
|
||||
status = urwid.AttrWrap(urwid.Columns([
|
||||
urwid.Text(t),
|
||||
urwid.Text(
|
||||
[
|
||||
self.text,
|
||||
('text', "%5s"%("[%s]"%len(self.master.state.flow_list)))
|
||||
self.helptext,
|
||||
" ",
|
||||
(
|
||||
'statusbar_text',
|
||||
"[%s:%s]"%(self.master.server.address or "*", self.master.server.port)
|
||||
),
|
||||
],
|
||||
align="right"),
|
||||
])
|
||||
align="right"
|
||||
),
|
||||
]), "statusbar")
|
||||
self.ib.set_w(status)
|
||||
self.master.drawscreen()
|
||||
|
||||
def update(self, text):
|
||||
self.text = text
|
||||
self.helptext = text
|
||||
self.redraw()
|
||||
|
||||
def selectable(self):
|
||||
@ -807,16 +828,15 @@ VIEW_HELP = 2
|
||||
class ConsoleMaster(flow.FlowMaster):
|
||||
palette = []
|
||||
footer_text_default = [
|
||||
('key', "?"), ":help ",
|
||||
('key', "q"), ":exit ",
|
||||
('statusbar_key', "?"), ":help ",
|
||||
]
|
||||
footer_text_help = [
|
||||
('key', "q"), ":back",
|
||||
('statusbar_key', "q"), ":back",
|
||||
]
|
||||
footer_text_connview = [
|
||||
('key', "tab"), ":toggle view ",
|
||||
('key', "?"), ":help ",
|
||||
('key', "q"), ":back ",
|
||||
('statusbar_key', "tab"), ":toggle view ",
|
||||
('statusbar_key', "?"), ":help ",
|
||||
('statusbar_key', "q"), ":back ",
|
||||
]
|
||||
def __init__(self, server, options):
|
||||
flow.FlowMaster.__init__(self, server, ConsoleState())
|
||||
@ -871,12 +891,19 @@ class ConsoleMaster(flow.FlowMaster):
|
||||
os.unlink(name)
|
||||
|
||||
def set_palette(self):
|
||||
BARBG = "dark blue"
|
||||
self.palette = [
|
||||
('body', 'black', 'dark cyan', 'standout'),
|
||||
('foot', 'light gray', 'default'),
|
||||
('title', 'white', 'default',),
|
||||
('editline', 'white', 'default',),
|
||||
|
||||
# Status bar
|
||||
('statusbar', 'light gray', BARBG),
|
||||
('statusbar_key', 'light cyan', BARBG),
|
||||
('statusbar_text', 'light gray', BARBG),
|
||||
('statusbar_highlight', 'white', BARBG),
|
||||
|
||||
# Help
|
||||
('key', 'light cyan', 'default', 'underline'),
|
||||
('head', 'white', 'default'),
|
||||
|
@ -447,7 +447,9 @@ class FlowMaster(controller.Master):
|
||||
self.client_playback = None
|
||||
self.scripts = {}
|
||||
self.kill_nonreplay = False
|
||||
|
||||
self.stickycookie_state = False
|
||||
self.stickycookie_txt = None
|
||||
|
||||
self.anticache = False
|
||||
self.refresh_server_playback = False
|
||||
|
Loading…
Reference in New Issue
Block a user