aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/cmdline.py20
-rw-r--r--mitmproxy/main.py46
2 files changed, 37 insertions, 29 deletions
diff --git a/mitmproxy/cmdline.py b/mitmproxy/cmdline.py
index 3b54f0ba..fcf1f89f 100644
--- a/mitmproxy/cmdline.py
+++ b/mitmproxy/cmdline.py
@@ -6,6 +6,7 @@ import re
import configargparse
+from mitmproxy import exceptions
from mitmproxy import filt
from mitmproxy.proxy import config
from netlib import human
@@ -149,17 +150,17 @@ def get_common_options(args):
try:
p = parse_replace_hook(i)
except ParseException as e:
- raise configargparse.ArgumentTypeError(e)
+ raise exceptions.OptionsError(e)
reps.append(p)
for i in args.replace_file:
try:
patt, rex, path = parse_replace_hook(i)
except ParseException as e:
- raise configargparse.ArgumentTypeError(e)
+ raise exceptions.OptionsError(e)
try:
v = open(path, "rb").read()
except IOError as e:
- raise configargparse.ArgumentTypeError(
+ raise exceptions.OptionsError(
"Could not read replace file: %s" % path
)
reps.append((patt, rex, v))
@@ -169,17 +170,17 @@ def get_common_options(args):
try:
p = parse_setheader(i)
except ParseException as e:
- raise configargparse.ArgumentTypeError(e)
+ raise exceptions.OptionsError(e)
setheaders.append(p)
if args.outfile and args.outfile[0] == args.rfile:
if args.outfile[1] == "wb":
- raise configargparse.ArgumentTypeError(
+ raise exceptions.OptionsError(
"Cannot use '{}' for both reading and writing flows. "
"Are you looking for --afile?".format(args.rfile)
)
else:
- raise configargparse.ArgumentTypeError(
+ raise exceptions.OptionsError(
"Cannot use '{}' for both reading and appending flows. "
"That would trigger an infinite loop."
)
@@ -194,7 +195,12 @@ def get_common_options(args):
body_size_limit = args.body_size_limit
if body_size_limit:
- body_size_limit = human.parse_size(body_size_limit)
+ try:
+ body_size_limit = human.parse_size(body_size_limit)
+ except ValueError, e:
+ raise exceptions.OptionsError(
+ "Invalid body size limit specification: %s" % body_size_limit
+ )
return dict(
app=args.app,
diff --git a/mitmproxy/main.py b/mitmproxy/main.py
index a245c979..fee90d38 100644
--- a/mitmproxy/main.py
+++ b/mitmproxy/main.py
@@ -64,16 +64,18 @@ def mitmproxy(args=None): # pragma: no cover
parser = cmdline.mitmproxy()
args = parser.parse_args(args)
- console_options = console.master.Options(**cmdline.get_common_options(args))
- console_options.palette = args.palette
- console_options.palette_transparent = args.palette_transparent
- console_options.eventlog = args.eventlog
- console_options.follow = args.follow
- console_options.intercept = args.intercept
- console_options.limit = args.limit
- console_options.no_mouse = args.no_mouse
-
try:
+ console_options = console.master.Options(
+ **cmdline.get_common_options(args)
+ )
+ console_options.palette = args.palette
+ console_options.palette_transparent = args.palette_transparent
+ console_options.eventlog = args.eventlog
+ console_options.follow = args.follow
+ console_options.intercept = args.intercept
+ console_options.limit = args.limit
+ console_options.no_mouse = args.no_mouse
+
proxy_config = process_options(parser, console_options, args)
server = get_server(console_options.no_server, proxy_config)
m = console.master.ConsoleMaster(server, console_options)
@@ -96,12 +98,12 @@ def mitmdump(args=None): # pragma: no cover
if args.quiet:
args.flow_detail = 0
- dump_options = dump.Options(**cmdline.get_common_options(args))
- dump_options.flow_detail = args.flow_detail
- dump_options.keepserving = args.keepserving
- dump_options.filtstr = " ".join(args.args) if args.args else None
try:
+ dump_options = dump.Options(**cmdline.get_common_options(args))
+ dump_options.flow_detail = args.flow_detail
+ dump_options.keepserving = args.keepserving
+ dump_options.filtstr = " ".join(args.args) if args.args else None
proxy_config = process_options(parser, dump_options, args)
server = get_server(dump_options.no_server, proxy_config)
master = dump.DumpMaster(server, dump_options)
@@ -130,16 +132,16 @@ def mitmweb(args=None): # pragma: no cover
args = parser.parse_args(args)
- web_options = web.master.Options(**cmdline.get_common_options(args))
- web_options.intercept = args.intercept
- web_options.wdebug = args.wdebug
- web_options.wiface = args.wiface
- web_options.wport = args.wport
- web_options.wsingleuser = args.wsingleuser
- web_options.whtpasswd = args.whtpasswd
- web_options.process_web_options(parser)
-
try:
+ web_options = web.master.Options(**cmdline.get_common_options(args))
+ web_options.intercept = args.intercept
+ web_options.wdebug = args.wdebug
+ web_options.wiface = args.wiface
+ web_options.wport = args.wport
+ web_options.wsingleuser = args.wsingleuser
+ web_options.whtpasswd = args.whtpasswd
+ web_options.process_web_options(parser)
+
proxy_config = process_options(parser, web_options, args)
server = get_server(web_options.no_server, proxy_config)
m = web.master.WebMaster(server, web_options)