a2004491dd295e53350edaeefa92806ffda611a3
[invirt/packages/invirt-web.git] / code / auth.fcgi
1 #!/usr/bin/python
2 """Main FastCGI entry point for authenticated web interface"""
3
4 import cherrypy
5 import os
6 import sys
7 from main import InvirtWeb
8
9 dev = False
10 base_dir = os.path.dirname(__file__)
11
12 def usage():
13     print >>sys.stderr, """%s [config]
14
15 Run server as FastCGI, with CherryPy config from "main.conf".
16
17 With `config`, run standalone with CherryPy config from `config`.
18 """ % sys.argv[0]
19     sys.exit(2)
20
21 if __name__ == "__main__":
22     if len(sys.argv) > 2:
23         usage()
24     if len(sys.argv) > 1:
25         if sys.argv[1] in ('-h', '--help'):
26             usage()
27         conf_file = sys.argv[1]
28         dev = True
29     else:
30         conf_file = os.path.join(base_dir, 'main.conf')
31
32     app_config = {
33         '/': {
34             'tools.invirtwebstate.on': True,
35             },
36         }
37                     
38     app = cherrypy.tree.mount(InvirtWeb(),
39                               '/',
40                               app_config)
41     app.merge(conf_file)
42     cherrypy.config.update(conf_file)
43
44     if dev:
45         cherrypy.server.quickstart()
46         cherrypy.engine.start()
47         cherrypy.engine.block()
48     else:
49         cherrypy.engine.start(blocking=False)
50         from flup.server.fcgi import WSGIServer
51         server = WSGIServer(cherrypy.tree)
52         server.run()