X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/ee5742efe3b81be4e187b06b7e64faee28e9d3b8..46eb68a8b8105d0746e28fe0d2a4309a01a040d9:/code/main.py diff --git a/code/main.py b/code/main.py index 6fdd31a..17bbd62 100755 --- a/code/main.py +++ b/code/main.py @@ -13,8 +13,8 @@ import sys import time import urllib import socket +import cherrypy from StringIO import StringIO - def revertStandardError(): """Move stderr to stdout, and return the contents of the old stderr.""" errio = sys.stderr @@ -45,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:] @@ -217,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. @@ -626,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, @@ -672,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: