diff options
author | Maximilian Hils <git@maximilianhils.com> | 2015-02-13 23:48:45 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2015-02-13 23:48:45 +0100 |
commit | bd6c3f64c1f3102a4e91d4a964757821773781e0 (patch) | |
tree | d3397e61a505d0391c18100bba067db8a3f2ece8 /libmproxy/console | |
parent | e0c5f86b20aaeb4a28c725badb30cee6cbd2bd04 (diff) | |
parent | 010b921a93b2c7e3d6b26ca0db4538a56d7c8fb0 (diff) | |
download | mitmproxy-bd6c3f64c1f3102a4e91d4a964757821773781e0.tar.gz mitmproxy-bd6c3f64c1f3102a4e91d4a964757821773781e0.tar.bz2 mitmproxy-bd6c3f64c1f3102a4e91d4a964757821773781e0.zip |
Merge pull request #474 from tekii/feature-426
Feature 426
Diffstat (limited to 'libmproxy/console')
-rw-r--r-- | libmproxy/console/common.py | 11 | ||||
-rw-r--r-- | libmproxy/console/flowlist.py | 30 | ||||
-rw-r--r-- | libmproxy/console/flowview.py | 14 |
3 files changed, 43 insertions, 12 deletions
diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py index e4a4acba..a2cfd57b 100644 --- a/libmproxy/console/common.py +++ b/libmproxy/console/common.py @@ -17,6 +17,17 @@ VIEW_FLOW = 1 VIEW_FLOW_REQUEST = 0 VIEW_FLOW_RESPONSE = 1 +METHOD_OPTIONS = [ + ("get", "g"), + ("post", "p"), + ("put", "u"), + ("head", "h"), + ("trace", "t"), + ("delete", "d"), + ("options", "o"), + ("edit raw", "e"), +] + def highlight_key(s, k): l = [] diff --git a/libmproxy/console/flowlist.py b/libmproxy/console/flowlist.py index c5cef061..9e7c6d69 100644 --- a/libmproxy/console/flowlist.py +++ b/libmproxy/console/flowlist.py @@ -1,5 +1,6 @@ from __future__ import absolute_import import urwid +from netlib import http from . import common def _mkhelp(): @@ -16,6 +17,7 @@ def _mkhelp(): ("g", "copy flow to clipboard"), ("l", "set limit filter pattern"), ("L", "load saved flows"), + ("n", "create a new request"), ("r", "replay request"), ("V", "revert changes to request"), ("w", "save flows "), @@ -245,6 +247,32 @@ class FlowListBox(urwid.ListBox): self.master = master urwid.ListBox.__init__(self, master.flow_list_walker) + def get_method_raw(self, k): + if k: + self.get_url(k) + + def get_method(self, k): + if k == "e": + self.master.prompt("Method:", "", self.get_method_raw) + else: + method = "" + for i in common.METHOD_OPTIONS: + if i[1] == k: + method = i[0].upper() + self.get_url(method) + + def get_url(self,method): + self.master.prompt("URL:", "http://www.example.com/", self.new_request, method) + + def new_request(self, url, method): + parts = http.parse_url(str(url)) + if not parts: + self.master.statusbar.message("Invalid Url") + return + scheme, host, port, path = parts + f = self.master.create_request(method, scheme, host, port, path) + self.master.view_flow(f) + def keypress(self, size, key): key = common.shortcuts(key) if key == "A": @@ -262,6 +290,8 @@ class FlowListBox(urwid.ListBox): self.master.state.last_saveload, self.master.load_flows_callback ) + elif key == "n": + self.master.prompt_onekey("Method", common.METHOD_OPTIONS, self.get_method) elif key == "F": self.master.toggle_follow_flows() elif key == "W": diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py index d5d41f7b..5c91512c 100644 --- a/libmproxy/console/flowview.py +++ b/libmproxy/console/flowview.py @@ -109,16 +109,6 @@ cache = CallbackCache() class FlowView(common.WWrap): REQ = 0 RESP = 1 - method_options = [ - ("get", "g"), - ("post", "p"), - ("put", "u"), - ("head", "h"), - ("trace", "t"), - ("delete", "d"), - ("options", "o"), - ("edit raw", "e"), - ] highlight_color = "focusfield" @@ -504,7 +494,7 @@ class FlowView(common.WWrap): if m == "e": self.master.prompt_edit("Method", self.flow.request.method, self.set_method_raw) else: - for i in self.method_options: + for i in common.METHOD_OPTIONS: if i[1] == m: self.flow.request.method = i[0].upper() self.master.refresh_flow(self.flow) @@ -599,7 +589,7 @@ class FlowView(common.WWrap): elif part == "u" and self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: self.master.prompt_edit("URL", message.url, self.set_url) elif part == "m" and self.state.view_flow_mode == common.VIEW_FLOW_REQUEST: - self.master.prompt_onekey("Method", self.method_options, self.edit_method) + self.master.prompt_onekey("Method", common.METHOD_OPTIONS, self.edit_method) elif part == "c" and self.state.view_flow_mode == common.VIEW_FLOW_RESPONSE: self.master.prompt_edit("Code", str(message.code), self.set_resp_code) elif part == "m" and self.state.view_flow_mode == common.VIEW_FLOW_RESPONSE: |