Full error handling
[invirt/packages/invirt-web.git] / code / main.fcgi
1 #!/usr/bin/python
2 """Main FastCGI entry point for web interface"""
3
4 import cherrypy
5 import os
6 import sys
7 from main import InvirtWeb, InvirtUnauthWeb
8
9 dev = False
10 base_dir = os.path.dirname(__file__)
11
12 if __name__=="__main__":
13     static_dir = os.path.join(base_dir, 'static')
14
15     if len(sys.argv) > 1:
16         conf_file = sys.argv[1]
17         dev = True
18     else:
19         conf_file = os.path.join(base_dir, 'main.conf')
20     app = cherrypy.tree.mount(InvirtWeb(),
21         '/',
22         {'/':      {'tools.staticdir.root': static_dir,
23                     'tools.invirtwebstate.on': True},
24         '/static': {'tools.staticdir.on': True,
25                     'tools.staticdir.dir': static_dir}
26          })
27     app.merge(conf_file)
28     unauthApp = cherrypy.tree.mount(InvirtUnauthWeb(),
29                                     '/unauth',
30                                     {'/': {'tools.invirtwebstate.on': True}})
31     unauthApp.merge(conf_file)
32     cherrypy.config.update(conf_file)
33
34     if dev:
35         cherrypy.server.quickstart()
36         cherrypy.engine.start()
37         cherrypy.engine.block()
38     else:
39         cherrypy.engine.start(blocking=False)
40         from flup.server.fcgi import WSGIServer
41         server = WSGIServer(cherrypy.tree)
42         server.run()