aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-08-19 13:15:54 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-08-19 13:15:54 +1200
commit3787f8befb3d0ec35a9359d76f86e0db0e5ad2b0 (patch)
treeb9ea47dd3092932d252cc4c74636279e1f0ed1cc /libmproxy/console
parenta77ccc406dc23a419b32cd37ca3a83542bd6681a (diff)
downloadmitmproxy-3787f8befb3d0ec35a9359d76f86e0db0e5ad2b0.tar.gz
mitmproxy-3787f8befb3d0ec35a9359d76f86e0db0e5ad2b0.tar.bz2
mitmproxy-3787f8befb3d0ec35a9359d76f86e0db0e5ad2b0.zip
Add a graphical editor for path components (e -> p shortcut from request view screen).
Diffstat (limited to 'libmproxy/console')
-rw-r--r--libmproxy/console/flowview.py10
-rw-r--r--libmproxy/console/grideditor.py12
2 files changed, 19 insertions, 3 deletions
diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py
index 0106e075..1d1d1e7b 100644
--- a/libmproxy/console/flowview.py
+++ b/libmproxy/console/flowview.py
@@ -317,6 +317,9 @@ class FlowView(common.WWrap):
def set_query(self, lst, conn):
conn.set_query(flow.ODict(lst))
+ def set_path_components(self, lst, conn):
+ conn.set_path_components([i[0] for i in lst])
+
def set_form(self, lst, conn):
conn.set_form_urlencoded(flow.ODict(lst))
@@ -356,6 +359,10 @@ class FlowView(common.WWrap):
self.edit_form(conn)
elif part == "h":
self.master.view_grideditor(grideditor.HeaderEditor(self.master, conn.headers.lst, self.set_headers, conn))
+ elif part == "p":
+ p = conn.get_path_components()
+ p = [[i] for i in p]
+ self.master.view_grideditor(grideditor.PathEditor(self.master, p, self.set_path_components, conn))
elif part == "q":
self.master.view_grideditor(grideditor.QueryEditor(self.master, conn.get_query().lst, self.set_query, conn))
elif part == "u" and self.state.view_flow_mode == common.VIEW_FLOW_REQUEST:
@@ -470,9 +477,10 @@ class FlowView(common.WWrap):
"Edit request",
(
("query", "q"),
- ("form", "f"),
+ ("path", "p"),
("url", "u"),
("header", "h"),
+ ("form", "f"),
("raw body", "r"),
("method", "m"),
),
diff --git a/libmproxy/console/grideditor.py b/libmproxy/console/grideditor.py
index d62cb206..138ca12e 100644
--- a/libmproxy/console/grideditor.py
+++ b/libmproxy/console/grideditor.py
@@ -95,7 +95,8 @@ class GridRow(common.WWrap):
)
fspecs = self.fields[:]
- fspecs[0] = ("fixed", self.editor.first_width + 2, fspecs[0])
+ if len(self.fields) > 1:
+ fspecs[0] = ("fixed", self.editor.first_width + 2, fspecs[0])
w = urwid.Columns(
fspecs,
dividechars = 2
@@ -252,7 +253,7 @@ class GridEditor(common.WWrap):
headings = []
for i, h in enumerate(self.headings):
c = urwid.Text(h)
- if i == 0:
+ if i == 0 and len(self.headings) > 1:
headings.append(("fixed", first_width + 2, c))
else:
headings.append(c)
@@ -384,3 +385,10 @@ class SetHeadersEditor(GridEditor):
return True
return False
+
+class PathEditor(GridEditor):
+ title = "Editing URL path components"
+ columns = 1
+ headings = ("Component",)
+ encoding = "ascii"
+