aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/platform/openbsd.py1
-rw-r--r--mitmproxy/tools/console/commands.py2
-rw-r--r--mitmproxy/tools/console/defaultkeys.py2
-rw-r--r--mitmproxy/tools/console/flowlist.py2
-rw-r--r--mitmproxy/tools/console/grideditor/base.py2
-rw-r--r--mitmproxy/tools/console/grideditor/col_bytes.py2
-rw-r--r--mitmproxy/tools/console/grideditor/col_subgrid.py2
-rw-r--r--mitmproxy/tools/console/master.py7
-rw-r--r--mitmproxy/tools/console/options.py4
-rw-r--r--mitmproxy/tools/console/overlay.py2
-rw-r--r--mitmproxy/tools/console/select.py120
-rw-r--r--mitmproxy/tools/console/statusbar.py3
12 files changed, 18 insertions, 131 deletions
diff --git a/mitmproxy/platform/openbsd.py b/mitmproxy/platform/openbsd.py
index e8f5ff8e..302dc11b 100644
--- a/mitmproxy/platform/openbsd.py
+++ b/mitmproxy/platform/openbsd.py
@@ -1,2 +1,3 @@
+
def original_addr(csock):
return csock.getsockname()
diff --git a/mitmproxy/tools/console/commands.py b/mitmproxy/tools/console/commands.py
index f60285b1..e4535314 100644
--- a/mitmproxy/tools/console/commands.py
+++ b/mitmproxy/tools/console/commands.py
@@ -99,7 +99,7 @@ class CommandsList(urwid.ListBox):
super().__init__(self.walker)
def keypress(self, size, key):
- if key == "enter":
+ if key == "m_select":
foc, idx = self.get_focus()
signals.status_prompt_command.send(partial=foc.cmd.path + " ")
elif key == "m_start":
diff --git a/mitmproxy/tools/console/defaultkeys.py b/mitmproxy/tools/console/defaultkeys.py
index 5f48c0d8..2dc0e344 100644
--- a/mitmproxy/tools/console/defaultkeys.py
+++ b/mitmproxy/tools/console/defaultkeys.py
@@ -18,6 +18,7 @@ def map(km):
km.add("l", "console.nav.right", ["global"], "Right")
km.add("h", "console.nav.left", ["global"], "Left")
km.add("tab", "console.nav.next", ["global"], "Next")
+ km.add("enter", "console.nav.select", ["global"], "Select")
km.add(" ", "console.nav.pagedown", ["global"], "Page down")
km.add("ctrl f", "console.nav.pagedown", ["global"], "Page down")
km.add("ctrl b", "console.nav.pageup", ["global"], "Page up")
@@ -79,7 +80,6 @@ def map(km):
["flowlist", "flowview"],
"Run a script on this flow"
)
- km.add("enter", "console.view.flow @focus", ["flowlist"], "View this flow")
km.add(
"e",
diff --git a/mitmproxy/tools/console/flowlist.py b/mitmproxy/tools/console/flowlist.py
index 715ecb84..f00ed9fa 100644
--- a/mitmproxy/tools/console/flowlist.py
+++ b/mitmproxy/tools/console/flowlist.py
@@ -82,6 +82,8 @@ class FlowListBox(urwid.ListBox, layoutwidget.LayoutWidget):
self.master.commands.call("view.go 0")
elif key == "m_end":
self.master.commands.call("view.go -1")
+ elif key == "m_select":
+ self.master.commands.call("console.view.flow @focus")
return urwid.ListBox.keypress(self, size, key)
def view_changed(self):
diff --git a/mitmproxy/tools/console/grideditor/base.py b/mitmproxy/tools/console/grideditor/base.py
index bac574c4..cdda3def 100644
--- a/mitmproxy/tools/console/grideditor/base.py
+++ b/mitmproxy/tools/console/grideditor/base.py
@@ -6,7 +6,6 @@ import urwid
from mitmproxy.utils import strutils
from mitmproxy import exceptions
-from mitmproxy.tools.console import common
from mitmproxy.tools.console import signals
from mitmproxy.tools.console import layoutwidget
import mitmproxy.tools.console.master # noqa
@@ -252,7 +251,6 @@ class GridListBox(urwid.ListBox):
FIRST_WIDTH_MAX = 40
-FIRST_WIDTH_MIN = 20
class BaseGridEditor(urwid.WidgetWrap):
diff --git a/mitmproxy/tools/console/grideditor/col_bytes.py b/mitmproxy/tools/console/grideditor/col_bytes.py
index 227eb525..da10cbaf 100644
--- a/mitmproxy/tools/console/grideditor/col_bytes.py
+++ b/mitmproxy/tools/console/grideditor/col_bytes.py
@@ -15,7 +15,7 @@ class Column(base.Column):
return b""
def keypress(self, key, editor):
- if key in ["enter"]:
+ if key in ["m_select"]:
editor.walker.start_edit()
else:
return key
diff --git a/mitmproxy/tools/console/grideditor/col_subgrid.py b/mitmproxy/tools/console/grideditor/col_subgrid.py
index 4db37462..95995cd2 100644
--- a/mitmproxy/tools/console/grideditor/col_subgrid.py
+++ b/mitmproxy/tools/console/grideditor/col_subgrid.py
@@ -26,7 +26,7 @@ class Column(base.Column):
expire=1000
)
return
- elif key in ["enter"]:
+ elif key == "m_select":
editor.master.view_grideditor(
self.subeditor(
editor.master,
diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py
index 30b1277c..d2575145 100644
--- a/mitmproxy/tools/console/master.py
+++ b/mitmproxy/tools/console/master.py
@@ -138,6 +138,13 @@ class ConsoleAddon:
"""
self.master.inject_key("m_next")
+ @command.command("console.nav.select")
+ def nav_select(self) -> None:
+ """
+ Select a navigable item for viewing or editing.
+ """
+ self.master.inject_key("m_select")
+
@command.command("console.nav.up")
def nav_up(self) -> None:
"""
diff --git a/mitmproxy/tools/console/options.py b/mitmproxy/tools/console/options.py
index c53716e7..4d55aeec 100644
--- a/mitmproxy/tools/console/options.py
+++ b/mitmproxy/tools/console/options.py
@@ -176,8 +176,10 @@ class OptionsList(urwid.ListBox):
except exceptions.OptionsError as v:
signals.status_message.send(message=str(v))
self.walker.stop_editing()
+ return None
elif key == "esc":
self.walker.stop_editing()
+ return None
else:
if key == "m_start":
self.set_focus(0)
@@ -185,7 +187,7 @@ class OptionsList(urwid.ListBox):
elif key == "m_end":
self.set_focus(len(self.walker.opts) - 1)
self.walker._modified()
- elif key == "enter":
+ elif key == "m_select":
foc, idx = self.get_focus()
if foc.opt.typespec == bool:
self.master.options.toggler(foc.opt.name)()
diff --git a/mitmproxy/tools/console/overlay.py b/mitmproxy/tools/console/overlay.py
index d8049bb7..5a82a54b 100644
--- a/mitmproxy/tools/console/overlay.py
+++ b/mitmproxy/tools/console/overlay.py
@@ -115,7 +115,7 @@ class Chooser(urwid.WidgetWrap, layoutwidget.LayoutWidget):
def keypress(self, size, key):
key = self.master.keymap.handle("chooser", key)
- if key == "enter":
+ if key == "m_select":
self.callback(self.choices[self.walker.index])
signals.pop_view_state.send(self)
return super().keypress(size, key)
diff --git a/mitmproxy/tools/console/select.py b/mitmproxy/tools/console/select.py
deleted file mode 100644
index f7e5d950..00000000
--- a/mitmproxy/tools/console/select.py
+++ /dev/null
@@ -1,120 +0,0 @@
-import urwid
-
-from mitmproxy.tools.console import common
-
-
-class _OptionWidget(urwid.WidgetWrap):
-
- def __init__(self, option, text, shortcut, active, focus):
- self.option = option
- textattr = "text"
- keyattr = "key"
- if focus and active:
- textattr = "option_active_selected"
- keyattr = "option_selected_key"
- elif focus:
- textattr = "option_selected"
- keyattr = "option_selected_key"
- elif active:
- textattr = "option_active"
- if shortcut:
- text = common.highlight_key(
- text,
- shortcut,
- textattr = textattr,
- keyattr = keyattr
- )
- opt = urwid.Text(text, align="left")
- opt = urwid.AttrWrap(opt, textattr)
- opt = urwid.Padding(opt, align = "center", width = 40)
- urwid.WidgetWrap.__init__(self, opt)
-
- def keypress(self, size, key):
- return key
-
- def selectable(self):
- return True
-
-
-class OptionWalker(urwid.ListWalker):
-
- def __init__(self, options):
- urwid.ListWalker.__init__(self)
- self.options = options
- self.focus = 0
-
- def set_focus(self, pos):
- self.focus = pos
-
- def get_focus(self):
- return self.options[self.focus].render(True), self.focus
-
- def get_next(self, pos):
- if pos >= len(self.options) - 1:
- return None, None
- return self.options[pos + 1].render(False), pos + 1
-
- def get_prev(self, pos):
- if pos <= 0:
- return None, None
- return self.options[pos - 1].render(False), pos - 1
-
-
-class Heading:
-
- def __init__(self, text):
- self.text = text
-
- def render(self, focus):
- opt = urwid.Text("\n" + self.text, align="left")
- opt = urwid.AttrWrap(opt, "title")
- opt = urwid.Padding(opt, align = "center", width = 40)
- return opt
-
-
-def _neg(*args):
- return False
-
-
-class Option:
-
- def __init__(self, text, shortcut, getstate=None, activate=None):
- self.text = text
- self.shortcut = shortcut
- self.getstate = getstate or _neg
- self.activate = activate or _neg
-
- def render(self, focus):
- return _OptionWidget(
- self,
- self.text,
- self.shortcut,
- self.getstate(),
- focus)
-
-
-class Select(urwid.ListBox):
-
- def __init__(self, options):
- self.walker = OptionWalker(options)
- urwid.ListBox.__init__(
- self,
- self.walker
- )
- self.options = options
- self.keymap = {}
- for i in options:
- if hasattr(i, "shortcut") and i.shortcut:
- if i.shortcut in self.keymap:
- raise ValueError("Duplicate shortcut key: %s" % i.shortcut)
- self.keymap[i.shortcut] = i
-
- def keypress(self, size, key):
- if key == "enter" or key == " ":
- self.get_focus()[0].option.activate()
- return None
- if key in self.keymap:
- self.keymap[key].activate()
- self.set_focus(self.options.index(self.keymap[key]))
- return None
- return super().keypress(size, key)
diff --git a/mitmproxy/tools/console/statusbar.py b/mitmproxy/tools/console/statusbar.py
index 44b89c52..a37ecbd8 100644
--- a/mitmproxy/tools/console/statusbar.py
+++ b/mitmproxy/tools/console/statusbar.py
@@ -114,13 +114,10 @@ class ActionBar(urwid.WidgetWrap):
def prompt_done(self):
self.prompting = None
self.onekey = False
- self.pathprompt = False
signals.status_message.send(message="")
signals.focus.send(self, section="body")
def prompt_execute(self, txt):
- if self.pathprompt:
- self.last_path = txt
p = self.prompting
self.prompt_done()
msg = p(txt)