From d80e2e2b2b125a6b38baef6e9ba6d4282354775a Mon Sep 17 00:00:00 2001 From: Marcelo Glezer Date: Fri, 16 Jan 2015 12:13:55 -0300 Subject: added support for copying request (content|header) to clipboard --- libmproxy/console/common.py | 13 ++++++------- libmproxy/console/flowlist.py | 15 ++++++++++++++- libmproxy/console/flowview.py | 15 ++++++++++++++- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py index 29e59373..33738c0a 100644 --- a/libmproxy/console/common.py +++ b/libmproxy/console/common.py @@ -181,7 +181,7 @@ def save_body(path, master, state, content): def ask_save_body(k, master, state, content): if k == "y": master.path_prompt( - "Save response body: ", + "Save message content: ", state.last_saveload, save_body, master, @@ -189,12 +189,12 @@ def ask_save_body(k, master, state, content): content, ) -## common server_copy_response parts -def server_copy_response( k, master, state, response): +## common copy_message parts +def copy_message( k, master, state, message): if pyperclip: if k == "c": try: - pyperclip.copy(response.get_decoded_content()) + pyperclip.copy(message.get_decoded_content()) except TypeError: master.prompt_onekey( "Content is binary do you want to save it to a file instead?", @@ -205,17 +205,16 @@ def server_copy_response( k, master, state, response): ask_save_body, master, state, - response.get_decoded_content(), + message.get_decoded_content(), ) elif k == "h": try: - pyperclip.copy(str(response.headers)) + pyperclip.copy(str(message.headers)) except TypeError: master.statusbar.message("Error converting headers to text") else: master.statusbar.message("No clipboard support on your system, sorry.") - class FlowCache: @utils.LRUCache(200) def format_flow(self, *args): diff --git a/libmproxy/console/flowlist.py b/libmproxy/console/flowlist.py index 214c10db..77803a51 100644 --- a/libmproxy/console/flowlist.py +++ b/libmproxy/console/flowlist.py @@ -13,6 +13,7 @@ def _mkhelp(): ("e", "toggle eventlog"), ("F", "toggle follow flow list"), ("g", "copy response(content/headers) to clipboard"), + ("G", "copy request(content/headers) to clipboard"), ("l", "set limit filter pattern"), ("L", "load saved flows"), ("r", "replay request"), @@ -210,11 +211,23 @@ class ConnectionItem(common.WWrap): ("content", "c"), ("headers", "h"), ), - common.server_copy_response, + common.copy_message, self.master, self.state, self.flow.response, ) + elif key == "G": + self.master.prompt_onekey( + "Copy Request", + ( + ("content", "c"), + ("headers", "h"), + ), + common.copy_message, + self.master, + self.state, + self.flow.request, + ) else: return key diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py index b964b92a..a759f109 100644 --- a/libmproxy/console/flowview.py +++ b/libmproxy/console/flowview.py @@ -20,6 +20,7 @@ def _mkhelp(): ("e", "edit request/response"), ("f", "load full body data"), ("g", "copy response(content/headers) to clipboard"), + ("G", "copy request(content/headers) to clipboard"), ("m", "change body display mode for this entity"), (None, common.highlight_key("automatic", "a") + @@ -746,11 +747,23 @@ class FlowView(common.WWrap): ("content", "c"), ("headers", "h"), ), - common.server_copy_response, + common.copy_message, self.master, self.state, self.flow.response, ) + elif key == "G": + self.master.prompt_onekey( + "Copy Request", + ( + ("content", "c"), + ("headers", "h"), + ), + common.copy_message, + self.master, + self.state, + self.flow.request, + ) elif key == "m": p = list(contentview.view_prompts) p.insert(0, ("Clear", "C")) -- cgit v1.2.3