Basic CherryPy FastCGI handler
[invirt/packages/invirt-web.git] / code / main.fcgi
index b2c7031..ac34a64 100755 (executable)
@@ -1,3 +1,30 @@
 #!/usr/bin/python
-import main
-main.main()
+"""Main FastCGI entry point for web interface"""
+
+import cherrypy
+import os
+import sys
+from main import InvirtWeb
+
+dev = False
+base_dir = os.path.dirname(__file__)
+
+if __name__=="__main__":
+    if len(sys.argv) > 1:
+        conf_file = sys.argv[1]
+        dev = True
+    else:
+        conf_file = os.path.join(base_dir, 'main.conf')
+    app = cherrypy.tree.mount(InvirtWeb(), '/' if dev else '/main.fcgi')
+    app.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(app)
+        server.run()