2012-04-28 00:42:03 +00:00
|
|
|
#!/usr/bin/env python
|
2012-04-29 00:05:38 +00:00
|
|
|
import argparse, sys
|
2012-06-06 20:50:06 +00:00
|
|
|
from libpathod import pathod, utils, version
|
2012-04-28 00:42:03 +00:00
|
|
|
import tornado.ioloop
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser(description='Process some integers.')
|
2012-06-06 22:17:30 +00:00
|
|
|
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.')
|
2012-04-29 00:05:38 +00:00
|
|
|
parser.add_argument(
|
|
|
|
"-a", dest='anchors', default=[], type=str, action="append",
|
|
|
|
help='Add an anchor. Specified as a string with the form pattern=pagespec'
|
|
|
|
)
|
2012-04-28 00:42:03 +00:00
|
|
|
parser.add_argument(
|
2012-04-28 23:18:56 +00:00
|
|
|
"-d", dest='staticdir', default=None, type=str,
|
2012-04-28 00:42:03 +00:00
|
|
|
help='Directory for static files.'
|
|
|
|
)
|
2012-04-28 23:18:56 +00:00
|
|
|
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.'
|
|
|
|
)
|
2012-04-28 00:42:03 +00:00
|
|
|
args = parser.parse_args()
|
2012-04-29 00:05:38 +00:00
|
|
|
settings = dict(
|
|
|
|
staticdir=args.staticdir
|
|
|
|
)
|
2012-06-06 20:50:06 +00:00
|
|
|
application = pathod.PathodApp(**settings)
|
2012-04-29 00:05:38 +00:00
|
|
|
for i in args.anchors:
|
|
|
|
try:
|
|
|
|
rex, spec = utils.parse_anchor_spec(i, settings)
|
|
|
|
except utils.AnchorError, v:
|
|
|
|
parser.error(str(v))
|
|
|
|
application.add_anchor(rex, spec)
|
2012-04-28 00:42:03 +00:00
|
|
|
|
2012-04-28 23:18:56 +00:00
|
|
|
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
|
2012-04-28 00:42:03 +00:00
|
|
|
try:
|
2012-06-06 22:17:30 +00:00
|
|
|
port = pathod.make_server(application, args.port, args.address, ssl)
|
|
|
|
print "%s listening on port %s"%(version.NAMEVERSION, port)
|
|
|
|
pathod.run()
|
2012-04-28 00:42:03 +00:00
|
|
|
except KeyboardInterrupt:
|
|
|
|
pass
|