aboutsummaryrefslogtreecommitdiffstats
path: root/pathod
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-06-21 14:29:49 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-06-21 14:29:49 +1200
commit12c140b951705c08131cc4b86a247bccc9c493c0 (patch)
treea7f46e120bb5d522b59736861cfd89cafb18cc13 /pathod
parent1089a52f3d16c4fef504586cae18a5d324e8d75c (diff)
downloadmitmproxy-12c140b951705c08131cc4b86a247bccc9c493c0.tar.gz
mitmproxy-12c140b951705c08131cc4b86a247bccc9c493c0.tar.bz2
mitmproxy-12c140b951705c08131cc4b86a247bccc9c493c0.zip
Restore client argument parsing. Add thread-safe logging subsystem.
Diffstat (limited to 'pathod')
-rwxr-xr-xpathod58
1 files changed, 55 insertions, 3 deletions
diff --git a/pathod b/pathod
index f1cdc96c..d8565144 100755
--- a/pathod
+++ b/pathod
@@ -1,5 +1,57 @@
#!/usr/bin/env python
-from libpathod import pathod
+import argparse, sys
+from libpathod import pathod, utils, version
+import tornado.ioloop
-s = pathod.Pathod(("127.0.0.1", 8888))
-s.serve_forever()
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description='Process some integers.')
+ parser.add_argument("-p", dest='port', default=9999, type=int, help='Port. Specify 0 to pick an arbitrary empty port.')
+ parser.add_argument("-l", dest='address', default="0.0.0.0", type=str, help='Listening address.')
+ parser.add_argument(
+ "-a", dest='anchors', default=[], type=str, action="append",
+ help='Add an anchor. Specified as a string with the form pattern=pagespec'
+ )
+ parser.add_argument(
+ "-d", dest='staticdir', default=None, type=str,
+ help='Directory for static files.'
+ )
+ parser.add_argument(
+ "-s", dest='ssl', default=False,
+ action="store_true",
+ help='Serve with SSL.'
+ )
+ parser.add_argument(
+ "--keyfile", dest='ssl_keyfile', default=None,
+ type=str,
+ help='SSL key file. If not specified, a default key is used.'
+ )
+ parser.add_argument(
+ "--certfile", dest='ssl_certfile', default=None,
+ type=str,
+ help='SSL cert file. If not specified, a default cert is used.'
+ )
+ args = parser.parse_args()
+
+ sl = [args.ssl_keyfile, args.ssl_certfile]
+ if any(sl) and not all(sl):
+ parser.error("Both --certfile and --keyfile must be specified.")
+
+ if args.ssl:
+ ssl = dict(
+ keyfile = args.ssl_keyfile or utils.data.path("resources/server.key"),
+ certfile = args.ssl_certfile or utils.data.path("resources/server.crt"),
+ )
+ else:
+ ssl = None
+
+ pd = pathod.Pathod(
+ (args.address, args.port),
+ ssloptions = ssl,
+ staticdir = args.staticdir,
+ anchors = args.anchors
+ )
+ try:
+ print "%s listening on port %s"%(version.NAMEVERSION, pd.port)
+ pd.serve_forever()
+ except KeyboardInterrupt:
+ pass