aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorColdFire <9128903+fenilgandhi@users.noreply.github.com>2018-02-23 00:27:10 +0530
committerGitHub <noreply@github.com>2018-02-23 00:27:10 +0530
commit777cb98a86f3e8883383935661e2ed20ed9b6bd4 (patch)
tree67d3e1259dccb83866496f45fe20ac3bd76961ce /mitmproxy
parent6bf250aa3e8ede84d16170d95728c6488444a5a8 (diff)
parent58ccad7576e5fd33e937aba58df2f9edc389e52e (diff)
downloadmitmproxy-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.py4
-rw-r--r--mitmproxy/contentviews/__init__.py20
-rw-r--r--mitmproxy/contentviews/auto.py1
-rw-r--r--mitmproxy/contentviews/base.py1
-rw-r--r--mitmproxy/contentviews/css.py1
-rw-r--r--mitmproxy/contentviews/hex.py1
-rw-r--r--mitmproxy/contentviews/image/view.py1
-rw-r--r--mitmproxy/contentviews/javascript.py1
-rw-r--r--mitmproxy/contentviews/json.py1
-rw-r--r--mitmproxy/contentviews/multipart.py1
-rw-r--r--mitmproxy/contentviews/protobuf.py1
-rw-r--r--mitmproxy/contentviews/query.py1
-rw-r--r--mitmproxy/contentviews/raw.py1
-rw-r--r--mitmproxy/contentviews/urlencoded.py1
-rw-r--r--mitmproxy/contentviews/wbxml.py1
-rw-r--r--mitmproxy/contentviews/xml_html.py1
-rw-r--r--mitmproxy/options.py8
-rw-r--r--mitmproxy/tools/cmdline.py2
-rw-r--r--mitmproxy/tools/console/common.py11
-rw-r--r--mitmproxy/tools/console/consoleaddons.py3
-rw-r--r--mitmproxy/tools/console/statusbar.py8
-rw-r--r--mitmproxy/tools/main.py5
-rw-r--r--mitmproxy/version.py2
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