aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/cmdline.py
diff options
context:
space:
mode:
Diffstat (limited to 'libpathod/cmdline.py')
-rw-r--r--libpathod/cmdline.py42
1 files changed, 31 insertions, 11 deletions
diff --git a/libpathod/cmdline.py b/libpathod/cmdline.py
index 2c6e094e..1a000a93 100644
--- a/libpathod/cmdline.py
+++ b/libpathod/cmdline.py
@@ -3,7 +3,8 @@ import argparse
import os
import os.path
import sys
-from . import pathoc, pathod, version, utils
+import re
+from . import pathoc, pathod, version, utils, language
from netlib import http_uastrings
@@ -78,7 +79,10 @@ def go_pathoc():
group.add_argument(
"--sslversion", dest="sslversion", type=int, default=4,
choices=[1, 2, 3, 4],
- help="Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default to SSLv23."
+ help="""
+ Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default
+ to SSLv23.
+ """
)
group = parser.add_argument_group(
@@ -149,9 +153,14 @@ def go_pathoc():
for r in args.request:
if os.path.exists(r):
data = open(r).read()
- reqs.append(data)
- else:
- reqs.append(r)
+ r = data
+ try:
+ req = language.parse_request(r)
+ except language.ParseException, v:
+ print >> sys.stderr, "Error parsing request spec: %s"%v.msg
+ print >> sys.stderr, v.marked()
+ sys.exit(1)
+ reqs.append(req)
args.request = reqs
pathoc.main(args)
@@ -267,7 +276,8 @@ def go_pathod():
group.add_argument(
"--sslversion", dest="sslversion", type=int, default=4,
choices=[1, 2, 3, 4],
- help="Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default to SSLv23."
+ help=""""Use a specified protocol - TLSv1, SSLv2, SSLv3, SSLv23. Default
+ to SSLv23."""
)
group = parser.add_argument_group(
@@ -327,13 +337,23 @@ def go_pathod():
args.sizelimit = sizelimit
anchors = []
- for patt, spec in anchors:
+ for patt, spec in args.anchors:
if os.path.exists(spec):
data = open(spec).read()
- anchors.append((patt, data))
- else:
- anchors.append((patt, spec))
+ spec = data
+
+ try:
+ req = language.parse_response(spec)
+ except language.ParseException, v:
+ print >> sys.stderr, "Error parsing anchor spec: %s"%v.msg
+ print >> sys.stderr, v.marked()
+ sys.exit(1)
+ try:
+ arex = re.compile(patt)
+ except re.error:
+ print >> sys.stderr, "Invalid regex in anchor: %s" % patt
+ sys.exit(1)
+ anchors.append((arex, req))
args.anchors = anchors
pathod.main(args)
-