mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-01 15:55:28 +00:00
Show view mode in statusbar.
Also make "m" keyboard shortcut available globally.
This commit is contained in:
parent
37c8d3425d
commit
2a90ea69fd
@ -223,9 +223,15 @@ class ConnectionViewHeader(WWrap):
|
|||||||
|
|
||||||
|
|
||||||
VIEW_BODY_RAW = 0
|
VIEW_BODY_RAW = 0
|
||||||
VIEW_BODY_BINARY = 1
|
VIEW_BODY_HEX = 1
|
||||||
VIEW_BODY_PRETTY = 2
|
VIEW_BODY_PRETTY = 2
|
||||||
|
|
||||||
|
BODY_VIEWS = {
|
||||||
|
VIEW_BODY_RAW: "raw",
|
||||||
|
VIEW_BODY_HEX: "hex",
|
||||||
|
VIEW_BODY_PRETTY: "pretty"
|
||||||
|
}
|
||||||
|
|
||||||
VIEW_FLOW_REQUEST = 0
|
VIEW_FLOW_REQUEST = 0
|
||||||
VIEW_FLOW_RESPONSE = 1
|
VIEW_FLOW_RESPONSE = 1
|
||||||
|
|
||||||
@ -416,15 +422,6 @@ class ConnectionView(WWrap):
|
|||||||
self.view_response()
|
self.view_response()
|
||||||
self.master.refresh_connection(self.flow)
|
self.master.refresh_connection(self.flow)
|
||||||
|
|
||||||
def _changeview(self, v):
|
|
||||||
if v == "r":
|
|
||||||
self.state.view_body_mode = VIEW_BODY_RAW
|
|
||||||
elif v == "h":
|
|
||||||
self.state.view_body_mode = VIEW_BODY_BINARY
|
|
||||||
elif v == "p":
|
|
||||||
self.state.view_body_mode = VIEW_BODY_PRETTY
|
|
||||||
self.master.refresh_connection(self.flow)
|
|
||||||
|
|
||||||
def keypress(self, size, key):
|
def keypress(self, size, key):
|
||||||
if key == "tab":
|
if key == "tab":
|
||||||
if self.state.view_flow_mode == VIEW_FLOW_REQUEST and self.flow.response:
|
if self.state.view_flow_mode == VIEW_FLOW_REQUEST and self.flow.response:
|
||||||
@ -440,17 +437,6 @@ class ConnectionView(WWrap):
|
|||||||
elif key == "A":
|
elif key == "A":
|
||||||
self.master.accept_all()
|
self.master.accept_all()
|
||||||
self.master.view_flow(self.flow)
|
self.master.view_flow(self.flow)
|
||||||
elif key == "m":
|
|
||||||
self.master.prompt_onekey(
|
|
||||||
"View",
|
|
||||||
(
|
|
||||||
("raw", "r"),
|
|
||||||
("pretty", "p"),
|
|
||||||
("hex", "h"),
|
|
||||||
),
|
|
||||||
self._changeview
|
|
||||||
)
|
|
||||||
key = None
|
|
||||||
elif key == "e":
|
elif key == "e":
|
||||||
if self.state.view_flow_mode == VIEW_FLOW_REQUEST:
|
if self.state.view_flow_mode == VIEW_FLOW_REQUEST:
|
||||||
self.master.prompt_onekey(
|
self.master.prompt_onekey(
|
||||||
@ -673,7 +659,7 @@ class StatusBar(WWrap):
|
|||||||
if self.master.server:
|
if self.master.server:
|
||||||
boundaddr = "[%s:%s]"%(self.master.server.address or "*", self.master.server.port)
|
boundaddr = "[%s:%s]"%(self.master.server.address or "*", self.master.server.port)
|
||||||
else:
|
else:
|
||||||
boundaddr = "[no proxy]"
|
boundaddr = ""
|
||||||
|
|
||||||
status = urwid.AttrWrap(urwid.Columns([
|
status = urwid.AttrWrap(urwid.Columns([
|
||||||
urwid.Text(t),
|
urwid.Text(t),
|
||||||
@ -681,6 +667,9 @@ class StatusBar(WWrap):
|
|||||||
[
|
[
|
||||||
self.helptext,
|
self.helptext,
|
||||||
" ",
|
" ",
|
||||||
|
('statusbar_text', "["),
|
||||||
|
('statusbar_key', "m"),
|
||||||
|
('statusbar_text', (":%s]"%BODY_VIEWS[self.master.state.view_body_mode])),
|
||||||
('statusbar_text', boundaddr),
|
('statusbar_text', boundaddr),
|
||||||
],
|
],
|
||||||
align="right"
|
align="right"
|
||||||
@ -720,7 +709,7 @@ class ConsoleState(flow.State):
|
|||||||
flow.State.__init__(self)
|
flow.State.__init__(self)
|
||||||
self.focus = None
|
self.focus = None
|
||||||
|
|
||||||
self.view_body_mode = VIEW_BODY_RAW
|
self.view_body_mode = VIEW_BODY_PRETTY
|
||||||
self.view_flow_mode = VIEW_FLOW_REQUEST
|
self.view_flow_mode = VIEW_FLOW_REQUEST
|
||||||
|
|
||||||
self.last_script = ""
|
self.last_script = ""
|
||||||
@ -961,7 +950,7 @@ class ConsoleMaster(flow.FlowMaster):
|
|||||||
|
|
||||||
txt = [urwid.Text(hdr)]
|
txt = [urwid.Text(hdr)]
|
||||||
if content:
|
if content:
|
||||||
if viewmode == VIEW_BODY_BINARY:
|
if viewmode == VIEW_BODY_HEX:
|
||||||
self._view_conn_binary(content, txt)
|
self._view_conn_binary(content, txt)
|
||||||
elif viewmode == VIEW_BODY_PRETTY:
|
elif viewmode == VIEW_BODY_PRETTY:
|
||||||
self._find_pretty_view(content, hdrItems, txt)
|
self._find_pretty_view(content, hdrItems, txt)
|
||||||
@ -1345,6 +1334,15 @@ class ConsoleMaster(flow.FlowMaster):
|
|||||||
def set_intercept(self, txt):
|
def set_intercept(self, txt):
|
||||||
return self.state.set_intercept(txt)
|
return self.state.set_intercept(txt)
|
||||||
|
|
||||||
|
def changeview(self, v):
|
||||||
|
if v == "r":
|
||||||
|
self.state.view_body_mode = VIEW_BODY_RAW
|
||||||
|
elif v == "h":
|
||||||
|
self.state.view_body_mode = VIEW_BODY_HEX
|
||||||
|
elif v == "p":
|
||||||
|
self.state.view_body_mode = VIEW_BODY_PRETTY
|
||||||
|
self.refresh_connection(self.currentflow)
|
||||||
|
|
||||||
def drawscreen(self):
|
def drawscreen(self):
|
||||||
size = self.ui.get_cols_rows()
|
size = self.ui.get_cols_rows()
|
||||||
canvas = self.view.render(size, focus=1)
|
canvas = self.view.render(size, focus=1)
|
||||||
@ -1416,6 +1414,17 @@ class ConsoleMaster(flow.FlowMaster):
|
|||||||
k = "down"
|
k = "down"
|
||||||
elif k == "k":
|
elif k == "k":
|
||||||
k = "up"
|
k = "up"
|
||||||
|
elif k == "m":
|
||||||
|
self.prompt_onekey(
|
||||||
|
"View",
|
||||||
|
(
|
||||||
|
("raw", "r"),
|
||||||
|
("pretty", "p"),
|
||||||
|
("hex", "h"),
|
||||||
|
),
|
||||||
|
self.changeview
|
||||||
|
)
|
||||||
|
k = None
|
||||||
elif k in ("q", "Q"):
|
elif k in ("q", "Q"):
|
||||||
if k == "Q":
|
if k == "Q":
|
||||||
raise Stop
|
raise Stop
|
||||||
|
Loading…
Reference in New Issue
Block a user