Fix the unauthenticated web interface.
[invirt/packages/invirt-web.git] / code / main.fcgi
index cd10538..b20cfeb 100755 (executable)
@@ -4,27 +4,52 @@
 import cherrypy
 import os
 import sys
 import cherrypy
 import os
 import sys
-from main import InvirtWeb
+from main import InvirtWeb, InvirtUnauthWeb
 
 dev = False
 base_dir = os.path.dirname(__file__)
 
 
 dev = False
 base_dir = os.path.dirname(__file__)
 
-if __name__=="__main__":
+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')
 
     static_dir = os.path.join(base_dir, 'static')
 
+    if len(sys.argv) > 2:
+        usage()
     if len(sys.argv) > 1:
     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')
         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)
+
+    app_config = {
+        '/': {
+            'tools.invirtwebstate.on': True,
+            },
+        '/static': {
+            'tools.staticdir.root': static_dir,
+            'tools.staticdir.on': True,
+            'tools.staticdir.dir': static_dir,
+            }
+        }
+                    
+    authApp = cherrypy.tree.mount(InvirtWeb(),
+                                  '/auth',
+                                  app_config)
+    authApp.merge(conf_file)
+    unauthApp = cherrypy.tree.mount(InvirtUnauthWeb(),
+                                    '/unauth',
+                                    app_config)
+    unauthApp.merge(conf_file)
     cherrypy.config.update(conf_file)
 
     if dev:
     cherrypy.config.update(conf_file)
 
     if dev:
@@ -34,5 +59,5 @@ if __name__=="__main__":
     else:
         cherrypy.engine.start(blocking=False)
         from flup.server.fcgi import WSGIServer
     else:
         cherrypy.engine.start(blocking=False)
         from flup.server.fcgi import WSGIServer
-        server = WSGIServer(app)
+        server = WSGIServer(cherrypy.tree)
         server.run()
         server.run()