aboutsummaryrefslogtreecommitdiffstats
path: root/opathod
diff options
context:
space:
mode:
Diffstat (limited to 'opathod')
-rwxr-xr-xopathod56
1 files changed, 56 insertions, 0 deletions
diff --git a/opathod b/opathod
new file mode 100755
index 00000000..f49baa34
--- /dev/null
+++ b/opathod
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+import argparse, sys
+from libpathod import pathod, utils, version
+import tornado.ioloop
+
+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()
+
+ try:
+ app = pathod.make_app(staticdir=args.staticdir, anchors=args.anchors)
+ except utils.AnchorError, v:
+ parser.error(str(v))
+
+ 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
+ try:
+ server, port = pathod.make_server(app, args.port, args.address, ssl)
+ print "%s listening on port %s"%(version.NAMEVERSION, port)
+ pathod.run(server)
+ except KeyboardInterrupt:
+ pass