X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/cff8faf5438a6b098050d7b2a29bdae641b0ef72..52d630b4ed2f7bbdd61b3eada7a2c38d64c077cb:/code/main.fcgi diff --git a/code/main.fcgi b/code/main.fcgi index b2c7031..fa2681a 100755 --- a/code/main.fcgi +++ b/code/main.fcgi @@ -1,3 +1,55 @@ #!/usr/bin/python -import main -main.main() +"""Main FastCGI entry point for web interface""" + +import cherrypy +import os +import sys +from main import InvirtWeb, InvirtUnauthWeb + +dev = False +base_dir = os.path.dirname(__file__) + +def usage(): + print >>sys.stderr, """%s [config] + +Run server as FastCGI, with CherryPy config from "main.conf". + +With `config`, run standalone with CherryPy config from `config`. +""" % sys.argv[0] + sys.exit(2) + +if __name__ == "__main__": + static_dir = os.path.join(base_dir, 'static') + + if len(sys.argv) > 2: + usage() + if len(sys.argv) > 1: + if sys.argv[1] in ('-h', '--help'): + usage() + conf_file = sys.argv[1] + dev = True + else: + conf_file = os.path.join(base_dir, 'main.conf') + app = cherrypy.tree.mount(InvirtWeb(), + '/', + {'/': {'tools.staticdir.root': static_dir, + 'tools.invirtwebstate.on': True}, + '/static': {'tools.staticdir.on': True, + 'tools.staticdir.dir': static_dir} + }) + app.merge(conf_file) + unauthApp = cherrypy.tree.mount(InvirtUnauthWeb(), + '/unauth', + {'/': {'tools.invirtwebstate.on': True}}) + unauthApp.merge(conf_file) + cherrypy.config.update(conf_file) + + if dev: + cherrypy.server.quickstart() + cherrypy.engine.start() + cherrypy.engine.block() + else: + cherrypy.engine.start(blocking=False) + from flup.server.fcgi import WSGIServer + server = WSGIServer(cherrypy.tree) + server.run()