diff --git a/mitmproxy/cmdline.py b/mitmproxy/cmdline.py index a873143da..4727e263c 100644 --- a/mitmproxy/cmdline.py +++ b/mitmproxy/cmdline.py @@ -219,6 +219,11 @@ def basic_options(parser): action='version', version="%(prog)s" + " " + version.VERSION ) + parser.add_argument( + '--sysinfo', + action='store_true', + dest='sysinfo', + ) parser.add_argument( '--shortversion', action='version', diff --git a/mitmproxy/main.py b/mitmproxy/main.py index 38a204fde..34d4aa6b1 100644 --- a/mitmproxy/main.py +++ b/mitmproxy/main.py @@ -11,6 +11,7 @@ from mitmproxy import exceptions from mitmproxy.proxy import config from mitmproxy.proxy import server from netlib import version_check +from netlib import debug def assert_utf8_env(): @@ -40,6 +41,15 @@ def get_server(dummy_server, options): sys.exit(1) +def process_options(parser, options): + if options.sysinfo: + print(debug.sysinfo()) + sys.exit(0) + if options.quiet: + options.verbose = 0 + return config.process_proxy_options(parser, options) + + def mitmproxy(args=None): # pragma: no cover if os.name == "nt": print("Error: mitmproxy's console interface is not supported on Windows. " @@ -52,10 +62,8 @@ def mitmproxy(args=None): # pragma: no cover parser = cmdline.mitmproxy() options = parser.parse_args(args) - if options.quiet: - options.verbose = 0 + proxy_config = process_options(parser, options) - proxy_config = config.process_proxy_options(parser, options) console_options = console.master.Options(**cmdline.get_common_options(options)) console_options.palette = options.palette console_options.palette_transparent = options.palette_transparent @@ -81,11 +89,10 @@ def mitmdump(args=None): # pragma: no cover parser = cmdline.mitmdump() options = parser.parse_args(args) + proxy_config = process_options(parser, options) if options.quiet: - options.verbose = 0 options.flow_detail = 0 - proxy_config = config.process_proxy_options(parser, options) dump_options = dump.Options(**cmdline.get_common_options(options)) dump_options.flow_detail = options.flow_detail dump_options.keepserving = options.keepserving @@ -116,10 +123,8 @@ def mitmweb(args=None): # pragma: no cover parser = cmdline.mitmweb() options = parser.parse_args(args) - if options.quiet: - options.verbose = 0 + proxy_config = process_options(parser, options) - proxy_config = config.process_proxy_options(parser, options) web_options = web.master.Options(**cmdline.get_common_options(options)) web_options.intercept = options.intercept web_options.wdebug = options.wdebug diff --git a/netlib/debug.py b/netlib/debug.py new file mode 100644 index 000000000..ca25b8287 --- /dev/null +++ b/netlib/debug.py @@ -0,0 +1,26 @@ +import platform +from netlib import version + +""" + Some utilities to help with debugging. +""" + +def sysinfo(): + data = [ + "Mitmproxy verison: %s"%version.VERSION, + "Python version: %s"%platform.python_version(), + "Platform: %s"%platform.platform(), + ] + d = platform.linux_distribution() + if d[0]: + data.append("Linux distro: %s %s %s"%d) + + d = platform.mac_ver() + if d[0]: + data.append("Mac version: %s %s %s"%d) + + d = platform.win32_ver() + if d[0]: + data.append("Windows version: %s %s %s %s"%d) + + return "\n".join(data)