From f5f46bf0808a5c7d5f9ed89d02a4714bcb66bf43 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 19 Jan 2014 12:43:58 +1300 Subject: Re-enable caching on search. --- libmproxy/console/flowview.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py index 35fc1e43..45d57721 100644 --- a/libmproxy/console/flowview.py +++ b/libmproxy/console/flowview.py @@ -1,4 +1,4 @@ -import os, sys +import os, sys, copy import urwid import common, grideditor, contentview from .. import utils, flow, controller @@ -87,9 +87,7 @@ class FlowViewHeader(common.WWrap): class CallbackCache: - #commented decorator because it was breaking search functionality (caching after - # searches.) If it can be made to only cache the first time, it'd be great. - #@utils.LRUCache(200) + @utils.LRUCache(200) def _callback(self, method, *args, **kwargs): return getattr(self.obj, method)(*args, **kwargs) @@ -137,7 +135,6 @@ class FlowView(common.WWrap): limit = sys.maxint else: limit = contentview.VIEW_CUTOFF - description, text_objects = cache.callback( self, "_cached_content_view", viewmode, @@ -145,7 +142,6 @@ class FlowView(common.WWrap): conn.content, limit ) - return (description, text_objects) def cont_view_handle_missing(self, conn, viewmode): @@ -173,14 +169,12 @@ class FlowView(common.WWrap): key = "header", val = "text" ) - if conn.content is not None: override = self.override_get() viewmode = self.viewmode_get(override) msg, body = self.cont_view_handle_missing(conn, viewmode) elif conn.content == flow.CONTENT_MISSING: pass - return headers, msg, body def conn_text_merge(self, headers, msg, body): @@ -188,7 +182,6 @@ class FlowView(common.WWrap): Grabs what is returned by conn_text_raw and merges them all toghether, mainly used by conn_text and search """ - override = self.override_get() viewmode = self.viewmode_get(override) @@ -222,7 +215,6 @@ class FlowView(common.WWrap): """ headers, msg, body = self.conn_text_raw(conn) merged = self.conn_text_merge(headers, msg, body) - return urwid.ListBox(merged) def _tab(self, content, attr): @@ -350,6 +342,7 @@ class FlowView(common.WWrap): i = start_line found = False + text_objects = copy.deepcopy(text_objects) for text_object in text_objects[start_line:]: if i != start_line: start_index = 0 -- cgit v1.2.3 From bf1399fa2bc2f34a480a27f2a8ec98f2e479ddc2 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 19 Jan 2014 13:23:38 +1300 Subject: Handle views that don't support search gracefully This includes all key/value formatted views, e.g. the image view. We need to support these ultimately, but no time before the next release. --- libmproxy/console/flowview.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py index 45d57721..6c4a2651 100644 --- a/libmproxy/console/flowview.py +++ b/libmproxy/console/flowview.py @@ -3,6 +3,10 @@ import urwid import common, grideditor, contentview from .. import utils, flow, controller + +class SearchError(Exception): pass + + def _mkhelp(): text = [] keys = [ @@ -296,7 +300,10 @@ class FlowView(common.WWrap): # generate the body, highlight the words and get focus headers, msg, body = self.conn_text_raw(text) - body, focus_position = self.search_highlight_text(body, search_string) + try: + body, focus_position = self.search_highlight_text(body, search_string) + except SearchError: + return "Search not supported in this view." if focus_position == None: # no results found. @@ -347,8 +354,10 @@ class FlowView(common.WWrap): if i != start_line: start_index = 0 - text, style = text_object.get_text() - + try: + text, style = text_object.get_text() + except AttributeError: + raise SearchError() find_index = text.find(search_string, start_index) if find_index != -1: before = text[:find_index] -- cgit v1.2.3 From bd684d4540b196a215e026ee1773350421fbf85c Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 19 Jan 2014 13:33:15 +1300 Subject: PyInstaller bug requiring a console import in mitmdump is gone --- mitmdump | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mitmdump b/mitmdump index d7f784a1..68e8c4ee 100755 --- a/mitmdump +++ b/mitmdump @@ -1,7 +1,6 @@ #!/usr/bin/env python import sys, signal -# The unneccesary console import here is to work around a bug in pyinstaller -from libmproxy import proxy, dump, cmdline, version, console +from libmproxy import proxy, dump, cmdline, version import argparse if __name__ == '__main__': -- cgit v1.2.3 From 64be9b1a8a695f253dfcf2188ce303791d451bfa Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 19 Jan 2014 13:52:45 +1300 Subject: Optionally take the mitmproxy path for doc rendering from a env variable. --- doc-src/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/index.py b/doc-src/index.py index e62c1709..8f18e714 100644 --- a/doc-src/index.py +++ b/doc-src/index.py @@ -5,7 +5,7 @@ import countershape.template sys.path.insert(0, "..") from libmproxy import filt, version -MITMPROXY_SRC = os.path.abspath("..") +MITMPROXY_SRC = os.environ.get("MITMPROXY_SRC", os.path.abspath("..")) ns.VERSION = version.VERSION if ns.options.website: -- cgit v1.2.3 From f431eb5accb03a2e97109e4b12b880827fd8306e Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 19 Jan 2014 16:06:03 +1300 Subject: Tweak setup.py to allow installs outside source dir Also fix mitmdump version output --- mitmdump | 2 +- setup.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mitmdump b/mitmdump index 68e8c4ee..2ceb9b30 100755 --- a/mitmdump +++ b/mitmdump @@ -5,7 +5,7 @@ import argparse if __name__ == '__main__': parser = argparse.ArgumentParser(usage = "%(prog)s [options] [filter]") - parser.add_argument('--version', action='version', version=version.NAMEVERSION) + parser.add_argument('--version', action='version', version="mitmdump" + " " + version.VERSION) cmdline.common_options(parser) parser.add_argument( "--keepserving", diff --git a/setup.py b/setup.py index 3c126a0e..9b4d7f7b 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,12 @@ from distutils.core import setup import fnmatch, os.path from libmproxy import version + +def pdir(): + dirname, _ = os.path.split(__file__) + return os.path.abspath(dirname) + + def _fnmatch(name, patternList): for i in patternList: if fnmatch.fnmatch(name, i): @@ -65,7 +71,7 @@ def findPackages(path, dataExclude=[]): return packages, package_data -long_description = file("README.txt").read() +long_description = file(os.path.join(pdir(), "README.txt")).read() packages, package_data = findPackages("libmproxy") setup( name = "mitmproxy", -- cgit v1.2.3 From dc59325329c345dac70aad0b8245371338356cce Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 19 Jan 2014 17:40:26 +1300 Subject: Refactor docs to define nav sidebar in only one place. --- doc-src/_layout.html | 49 +-------------------------------------------- doc-src/_nav.html | 47 +++++++++++++++++++++++++++++++++++++++++++ doc-src/_websitelayout.html | 48 ++------------------------------------------ doc-src/index.py | 2 +- 4 files changed, 51 insertions(+), 95 deletions(-) create mode 100644 doc-src/_nav.html diff --git a/doc-src/_layout.html b/doc-src/_layout.html index 836a3e9d..c5fb6376 100644 --- a/doc-src/_layout.html +++ b/doc-src/_layout.html @@ -16,54 +16,7 @@
diff --git a/doc-src/_nav.html b/doc-src/_nav.html new file mode 100644 index 00000000..3b7c9e80 --- /dev/null +++ b/doc-src/_nav.html @@ -0,0 +1,47 @@ + diff --git a/doc-src/_websitelayout.html b/doc-src/_websitelayout.html index 3e9dfad7..cd0d23e2 100644 --- a/doc-src/_websitelayout.html +++ b/doc-src/_websitelayout.html @@ -6,7 +6,7 @@ - mitmproxy + mitmproxy