Get login information from Apache, if available
[invirt/packages/invirt-web.git] / code / main.py
index 1739318..17bbd62 100755 (executable)
@@ -15,13 +15,6 @@ import urllib
 import socket
 import cherrypy
 from StringIO import StringIO
-from view import View
-
-class InvirtWeb(View):
-    @cherrypy.expose
-    def helloworld(self):
-        return "Hello world!"
-
 def revertStandardError():
     """Move stderr to stdout, and return the contents of the old stderr."""
     errio = sys.stderr
@@ -52,6 +45,31 @@ from invirt.database import Machine, CDROM, session, connect, MachineAccess, Typ
 from invirt.config import structs as config
 from invirt.common import InvalidInput, CodeError
 
+from view import View
+
+class InvirtWeb(View):
+    def __init__(self):
+        super(self.__class__,self).__init__()
+        connect()
+        self._cp_config['tools.require_login.on'] = True
+
+    @cherrypy.expose
+    @cherrypy.tools.mako(filename="/list.mako")
+    def list(self):
+        """Handler for list requests."""
+        checkpoint.checkpoint('Getting list dict')
+        d = getListDict(cherrypy.request.login, cherrypy.request.state)
+        checkpoint.checkpoint('Got list dict')
+        return d
+    index=list
+
+    @cherrypy.expose
+    @cherrypy.tools.mako(filename="/helloworld.mako")
+    def helloworld(self):
+        return {}
+        return "Hello world!\nYour request: "+repr(dir(cherrypy.request))
+    helloworld._cp_config['tools.require_login.on'] = False
+
 def pathSplit(path):
     if path.startswith('/'):
         path = path[1:]
@@ -224,13 +242,6 @@ def getListDict(username, state):
              can_clone=can_clone)
     return d
 
-def listVms(username, state, path, fields):
-    """Handler for list requests."""
-    checkpoint.checkpoint('Getting list dict')
-    d = getListDict(username, state)
-    checkpoint.checkpoint('Got list dict')
-    return templates.list(searchList=[d])
-
 def vnc(username, state, path, fields):
     """VNC applet page.
 
@@ -633,7 +644,7 @@ def throwError(_, __, ___, ____):
     """Throw an error, to test the error-tracing mechanisms."""
     raise RuntimeError("test of the emergency broadcast system")
 
-mapping = dict(list=listVms,
+mapping = dict(#list=listVms,
                vnc=vnc,
                command=command,
                modify=modify,
@@ -679,21 +690,6 @@ def show_error(op, username, fields, err, emsg, traceback):
     d['details'] = details
     return templates.error(searchList=[d])
 
-def getUser(environ):
-    """Return the current user based on the SSL environment variables"""
-    user = environ.get('REMOTE_USER')
-    if user is None:
-        return
-    
-    if environ.get('AUTH_TYPE') == 'Negotiate':
-        # Convert the krb5 principal into a krb4 username
-        if not user.endswith('@%s' % config.kerberos.realm):
-            return
-        else:
-            return user.split('@')[0].replace('/', '.')
-    else:
-        return user
-
 def handler(username, state, path, fields):
     operation, path = pathSplit(path)
     if not operation: