diff options
author | ColdFire <9128903+fenilgandhi@users.noreply.github.com> | 2018-02-23 00:27:10 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-23 00:27:10 +0530 |
commit | 777cb98a86f3e8883383935661e2ed20ed9b6bd4 (patch) | |
tree | 67d3e1259dccb83866496f45fe20ac3bd76961ce /mitmproxy | |
parent | 6bf250aa3e8ede84d16170d95728c6488444a5a8 (diff) | |
parent | 58ccad7576e5fd33e937aba58df2f9edc389e52e (diff) | |
download | mitmproxy-777cb98a86f3e8883383935661e2ed20ed9b6bd4.tar.gz mitmproxy-777cb98a86f3e8883383935661e2ed20ed9b6bd4.tar.bz2 mitmproxy-777cb98a86f3e8883383935661e2ed20ed9b6bd4.zip |
Merge branch 'master' into issue-2872
Diffstat (limited to 'mitmproxy')
-rw-r--r-- | mitmproxy/addons/serverplayback.py | 4 | ||||
-rw-r--r-- | mitmproxy/contentviews/__init__.py | 20 | ||||
-rw-r--r-- | mitmproxy/contentviews/auto.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/base.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/css.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/hex.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/image/view.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/javascript.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/json.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/multipart.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/protobuf.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/query.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/raw.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/urlencoded.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/wbxml.py | 1 | ||||
-rw-r--r-- | mitmproxy/contentviews/xml_html.py | 1 | ||||
-rw-r--r-- | mitmproxy/options.py | 8 | ||||
-rw-r--r-- | mitmproxy/tools/cmdline.py | 2 | ||||
-rw-r--r-- | mitmproxy/tools/console/common.py | 11 | ||||
-rw-r--r-- | mitmproxy/tools/console/consoleaddons.py | 3 | ||||
-rw-r--r-- | mitmproxy/tools/console/statusbar.py | 8 | ||||
-rw-r--r-- | mitmproxy/tools/main.py | 5 | ||||
-rw-r--r-- | mitmproxy/version.py | 2 |
23 files changed, 19 insertions, 58 deletions
diff --git a/mitmproxy/addons/serverplayback.py b/mitmproxy/addons/serverplayback.py index 20fcfc2a..d8b2299a 100644 --- a/mitmproxy/addons/serverplayback.py +++ b/mitmproxy/addons/serverplayback.py @@ -132,13 +132,13 @@ class ServerPlayback: if rflow: response = rflow.response.copy() response.is_replay = True - if ctx.options.refresh_server_playback: + if ctx.options.server_replay_refresh: response.refresh() f.response = response if not self.flowmap: self.final_flow = f self.stop = True - elif ctx.options.replay_kill_extra: + elif ctx.options.server_replay_kill_extra: ctx.log.warn( "server_playback: killed non-replay request {}".format( f.request.url diff --git a/mitmproxy/contentviews/__init__.py b/mitmproxy/contentviews/__init__.py index f696f669..069dca08 100644 --- a/mitmproxy/contentviews/__init__.py +++ b/mitmproxy/contentviews/__init__.py @@ -16,7 +16,6 @@ parameters are passed as the ``query`` keyword argument. import traceback from typing import Dict, Optional # noqa from typing import List # noqa -from typing import Tuple # noqa from mitmproxy import exceptions from mitmproxy.net import http @@ -29,7 +28,6 @@ from .base import View, VIEW_CUTOFF, KEY_MAX, format_text, format_dict, TViewRes views = [] # type: List[View] content_types_map = {} # type: Dict[str, List[View]] -view_prompts = [] # type: List[Tuple[str, str]] def get(name: str) -> Optional[View]: @@ -39,32 +37,18 @@ def get(name: str) -> Optional[View]: return None -def get_by_shortcut(c: str) -> Optional[View]: - for i in views: - if i.prompt[1] == c: - return i - return None - - def add(view: View) -> None: # TODO: auto-select a different name (append an integer?) for i in views: if i.name == view.name: raise exceptions.ContentViewException("Duplicate view: " + view.name) - # TODO: the UI should auto-prompt for a replacement shortcut - for prompt in view_prompts: - if prompt[1] == view.prompt[1]: - raise exceptions.ContentViewException("Duplicate view shortcut: " + view.prompt[1]) - views.append(view) for ct in view.content_types: l = content_types_map.setdefault(ct, []) l.append(view) - view_prompts.append(view.prompt) - def remove(view: View) -> None: for ct in view.content_types: @@ -74,7 +58,6 @@ def remove(view: View) -> None: if not len(l): del content_types_map[ct] - view_prompts.remove(view.prompt) views.remove(view) @@ -178,6 +161,5 @@ add(protobuf.ViewProtobuf()) __all__ = [ "View", "VIEW_CUTOFF", "KEY_MAX", "format_text", "format_dict", "TViewResult", - "get", "get_by_shortcut", "add", "remove", - "get_content_view", "get_message_content_view", + "get", "add", "remove", "get_content_view", "get_message_content_view", ] diff --git a/mitmproxy/contentviews/auto.py b/mitmproxy/contentviews/auto.py index d46a1bd3..92d7c1f5 100644 --- a/mitmproxy/contentviews/auto.py +++ b/mitmproxy/contentviews/auto.py @@ -6,7 +6,6 @@ from . import base class ViewAuto(base.View): name = "Auto" - prompt = ("auto", "a") def __call__(self, data, **metadata): headers = metadata.get("headers", {}) diff --git a/mitmproxy/contentviews/base.py b/mitmproxy/contentviews/base.py index dbaa6ccc..19fc2b1b 100644 --- a/mitmproxy/contentviews/base.py +++ b/mitmproxy/contentviews/base.py @@ -12,7 +12,6 @@ TViewResult = typing.Tuple[str, typing.Iterator[TViewLine]] class View: name = None # type: str - prompt = None # type: typing.Tuple[str,str] content_types = [] # type: typing.List[str] def __call__(self, data: bytes, **metadata) -> TViewResult: diff --git a/mitmproxy/contentviews/css.py b/mitmproxy/contentviews/css.py index 30a583da..cbe8ce62 100644 --- a/mitmproxy/contentviews/css.py +++ b/mitmproxy/contentviews/css.py @@ -50,7 +50,6 @@ def beautify(data: str, indent: str = " "): class ViewCSS(base.View): name = "CSS" - prompt = ("css", "c") content_types = [ "text/css" ] diff --git a/mitmproxy/contentviews/hex.py b/mitmproxy/contentviews/hex.py index 6251a8f3..f88bf80c 100644 --- a/mitmproxy/contentviews/hex.py +++ b/mitmproxy/contentviews/hex.py @@ -4,7 +4,6 @@ from . import base class ViewHex(base.View): name = "Hex" - prompt = ("hex", "e") @staticmethod def _format(data): diff --git a/mitmproxy/contentviews/image/view.py b/mitmproxy/contentviews/image/view.py index fde9b39d..f6c37067 100644 --- a/mitmproxy/contentviews/image/view.py +++ b/mitmproxy/contentviews/image/view.py @@ -15,7 +15,6 @@ imghdr.tests.append(test_ico) class ViewImage(base.View): name = "Image" - prompt = ("image", "i") # there is also a fallback in the auto view for image/*. content_types = [ diff --git a/mitmproxy/contentviews/javascript.py b/mitmproxy/contentviews/javascript.py index 1d671fe6..1440ea5d 100644 --- a/mitmproxy/contentviews/javascript.py +++ b/mitmproxy/contentviews/javascript.py @@ -46,7 +46,6 @@ def beautify(data): class ViewJavaScript(base.View): name = "JavaScript" - prompt = ("javascript", "j") content_types = [ "application/x-javascript", "application/javascript", diff --git a/mitmproxy/contentviews/json.py b/mitmproxy/contentviews/json.py index de7f1093..e045bbb0 100644 --- a/mitmproxy/contentviews/json.py +++ b/mitmproxy/contentviews/json.py @@ -15,7 +15,6 @@ def pretty_json(s: bytes) -> Optional[bytes]: class ViewJSON(base.View): name = "JSON" - prompt = ("json", "s") content_types = [ "application/json", "application/vnd.api+json" diff --git a/mitmproxy/contentviews/multipart.py b/mitmproxy/contentviews/multipart.py index be3dc135..e122df59 100644 --- a/mitmproxy/contentviews/multipart.py +++ b/mitmproxy/contentviews/multipart.py @@ -5,7 +5,6 @@ from . import base class ViewMultipart(base.View): name = "Multipart Form" - prompt = ("multipart", "m") content_types = ["multipart/form-data"] @staticmethod diff --git a/mitmproxy/contentviews/protobuf.py b/mitmproxy/contentviews/protobuf.py index abd3985a..50f8dced 100644 --- a/mitmproxy/contentviews/protobuf.py +++ b/mitmproxy/contentviews/protobuf.py @@ -66,7 +66,6 @@ class ViewProtobuf(base.View): """ name = "Protocol Buffer" - prompt = ("protobuf", "p") content_types = [ "application/x-protobuf", "application/x-protobuffer", diff --git a/mitmproxy/contentviews/query.py b/mitmproxy/contentviews/query.py index 93f47829..4896624b 100644 --- a/mitmproxy/contentviews/query.py +++ b/mitmproxy/contentviews/query.py @@ -5,7 +5,6 @@ from . import base class ViewQuery(base.View): name = "Query" - prompt = ("query", "q") def __call__(self, data, **metadata): query = metadata.get("query") diff --git a/mitmproxy/contentviews/raw.py b/mitmproxy/contentviews/raw.py index dcc53aa7..300e70bb 100644 --- a/mitmproxy/contentviews/raw.py +++ b/mitmproxy/contentviews/raw.py @@ -6,7 +6,6 @@ from . import base class ViewRaw(base.View): name = "Raw" - prompt = ("raw", "r") def __call__(self, data, **metadata): return "Raw", base.format_text(strutils.bytes_to_escaped_str(data, True)) diff --git a/mitmproxy/contentviews/urlencoded.py b/mitmproxy/contentviews/urlencoded.py index a24f342a..371a160e 100644 --- a/mitmproxy/contentviews/urlencoded.py +++ b/mitmproxy/contentviews/urlencoded.py @@ -5,7 +5,6 @@ from . import base class ViewURLEncoded(base.View): name = "URL-encoded" - prompt = ("urlencoded", "u") content_types = ["application/x-www-form-urlencoded"] def __call__(self, data, **metadata): diff --git a/mitmproxy/contentviews/wbxml.py b/mitmproxy/contentviews/wbxml.py index d626e188..b33f4ce8 100644 --- a/mitmproxy/contentviews/wbxml.py +++ b/mitmproxy/contentviews/wbxml.py @@ -4,7 +4,6 @@ from . import base class ViewWBXML(base.View): name = "WBXML" - prompt = ("wbxml", "w") content_types = [ "application/vnd.wap.wbxml", "application/vnd.ms-sync.wbxml" diff --git a/mitmproxy/contentviews/xml_html.py b/mitmproxy/contentviews/xml_html.py index 62fb939f..292290c7 100644 --- a/mitmproxy/contentviews/xml_html.py +++ b/mitmproxy/contentviews/xml_html.py @@ -214,7 +214,6 @@ def format_xml(tokens: Iterable[Token]) -> str: class ViewXmlHtml(base.View): name = "XML/HTML" - prompt = ("xml/html", "x") content_types = ["text/xml", "text/html"] def __call__(self, data, **metadata): diff --git a/mitmproxy/options.py b/mitmproxy/options.py index 862380c5..76060548 100644 --- a/mitmproxy/options.py +++ b/mitmproxy/options.py @@ -63,9 +63,9 @@ class Options(optmanager.OptManager): onboarding_port = None # type: int proxyauth = None # type: Optional[str] rawtcp = None # type: bool - refresh_server_playback = None # type: bool + server_replay_refresh = None # type: bool replacements = None # type: Sequence[str] - replay_kill_extra = None # type: bool + server_replay_kill_extra = None # type: bool rfile = None # type: Optional[str] save_stream_file = None # type: Optional[str] save_stream_filter = None # type: Optional[str] @@ -137,7 +137,7 @@ class Options(optmanager.OptManager): "Replay client requests from a saved file." ) self.add_option( - "replay_kill_extra", bool, False, + "server_replay_kill_extra", bool, False, "Kill extra requests during replay." ) self.add_option( @@ -160,7 +160,7 @@ class Options(optmanager.OptManager): """ ) self.add_option( - "refresh_server_playback", bool, True, + "server_replay_refresh", bool, True, """ Refresh server replay responses by adjusting date, expires and last-modified headers, as well as adjusting cookie expiration. diff --git a/mitmproxy/tools/cmdline.py b/mitmproxy/tools/cmdline.py index d611a8d2..d413ff28 100644 --- a/mitmproxy/tools/cmdline.py +++ b/mitmproxy/tools/cmdline.py @@ -87,7 +87,7 @@ def common_options(parser, opts): # Server replay group = parser.add_argument_group("Server Replay") opts.make_parser(group, "server_replay", metavar="PATH", short="S") - opts.make_parser(group, "replay_kill_extra") + opts.make_parser(group, "server_replay_kill_extra") opts.make_parser(group, "server_replay_nopop") # Replacements diff --git a/mitmproxy/tools/console/common.py b/mitmproxy/tools/console/common.py index 8a842799..72282015 100644 --- a/mitmproxy/tools/console/common.py +++ b/mitmproxy/tools/console/common.py @@ -10,17 +10,6 @@ from mitmproxy.utils import human # Detect Windows Subsystem for Linux IS_WSL = "Microsoft" in platform.platform() -METHOD_OPTIONS = [ - ("get", "g"), - ("post", "p"), - ("put", "u"), - ("head", "h"), - ("trace", "t"), - ("delete", "d"), - ("options", "o"), - ("edit raw", "e"), -] - def is_keypress(k): """ diff --git a/mitmproxy/tools/console/consoleaddons.py b/mitmproxy/tools/console/consoleaddons.py index 03f2e240..c73eda42 100644 --- a/mitmproxy/tools/console/consoleaddons.py +++ b/mitmproxy/tools/console/consoleaddons.py @@ -1,4 +1,5 @@ import csv +import shlex import typing from mitmproxy import ctx @@ -259,7 +260,7 @@ class ConsoleAddon: def callback(opt): # We're now outside of the call context... - repl = " ".join(args) + repl = shlex.quote(" ".join(args)) repl = repl.replace("{choice}", opt) try: self.master.commands.call(subcmd + " " + repl) diff --git a/mitmproxy/tools/console/statusbar.py b/mitmproxy/tools/console/statusbar.py index ef32b195..bdb39013 100644 --- a/mitmproxy/tools/console/statusbar.py +++ b/mitmproxy/tools/console/statusbar.py @@ -213,9 +213,9 @@ class StatusBar(urwid.WidgetWrap): opts.append("anticomp") if self.master.options.showhost: opts.append("showhost") - if not self.master.options.refresh_server_playback: + if not self.master.options.server_replay_refresh: opts.append("norefresh") - if self.master.options.replay_kill_extra: + if self.master.options.server_replay_kill_extra: opts.append("killextra") if not self.master.options.upstream_cert: opts.append("no-upstream-cert") @@ -230,9 +230,7 @@ class StatusBar(urwid.WidgetWrap): if self.master.options.mode != "regular": r.append("[%s]" % self.master.options.mode) if self.master.options.scripts: - r.append("[") - r.append(("heading_key", "s")) - r.append("cripts:%s]" % len(self.master.options.scripts)) + r.append("[scripts:%s]" % len(self.master.options.scripts)) if self.master.options.save_stream_file: r.append("[W:%s]" % self.master.options.save_stream_file) diff --git a/mitmproxy/tools/main.py b/mitmproxy/tools/main.py index 3735cbf4..5c2d9f2f 100644 --- a/mitmproxy/tools/main.py +++ b/mitmproxy/tools/main.py @@ -44,8 +44,13 @@ def process_options(parser, opts, args): print(debug.dump_system_info()) sys.exit(0) if args.quiet or args.options or args.commands: + # also reduce log verbosity if --options or --commands is passed, + # we don't want log messages from regular startup then. args.verbosity = 'error' args.flow_detail = 0 + if args.verbose: + args.verbosity = 'debug' + args.flow_detail = 2 adict = {} for n in dir(args): diff --git a/mitmproxy/version.py b/mitmproxy/version.py index c2cb3822..92b14b9a 100644 --- a/mitmproxy/version.py +++ b/mitmproxy/version.py @@ -3,7 +3,7 @@ import subprocess # The actual version string. For precompiled binaries, this will be changed to include the build # tag, e.g. "3.0.0.dev0042-0xcafeabc" -VERSION = "3.0.0" +VERSION = "4.0.0" PATHOD = "pathod " + VERSION MITMPROXY = "mitmproxy " + VERSION |