From 12c140b951705c08131cc4b86a247bccc9c493c0 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Thu, 21 Jun 2012 14:29:49 +1200 Subject: Restore client argument parsing. Add thread-safe logging subsystem. --- pathod | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) (limited to 'pathod') 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 -- cgit v1.2.3