X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/7ab93691b4b6a45e99f78b37796413c5f24629a4..8af4d9d694c4491601cb6f9394b811fc36f13cb2:/code/main.py?ds=inline diff --git a/code/main.py b/code/main.py index 8506ee5..78ca14f 100755 --- a/code/main.py +++ b/code/main.py @@ -39,8 +39,8 @@ import cache_acls from webcommon import InvalidInput, CodeError, State import controls from getafsgroups import getAfsGroupMembers -import sipb_xen_database as database -from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall +from invirt import database +from invirt.database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall from invirt.config import structs as config def pathSplit(path): @@ -85,6 +85,7 @@ def makeErrorPre(old, addition): return '

STDERR:

' + str(addition) + '
' Template.database = database +Template.config = config Template.helppopup = staticmethod(helppopup) Template.err = None @@ -594,14 +595,15 @@ def unauthFront(_, _2, _3, fields): """Information for unauth'd users.""" return templates.unauth(searchList=[{'simple' : True}]) -def overlord(username, state, path, fields): +def admin(username, state, path, fields): if path == '': return ({'Status': '303 See Other', - 'Location': 'overlord/'}, + 'Location': 'admin/'}, "You shouldn't see this message.") - if not username in getAfsGroupMembers('system:xvm', 'athena.mit.edu'): - raise InvalidInput('username', username, 'Not an overlord.') - newstate = State(username, overlord=True) + if not username in getAfsGroupMembers(config.web.adminacl, 'athena.mit.edu'): + raise InvalidInput('username', username, + 'Not in admin group %s.' % config.web.adminacl) + newstate = State(username, isadmin=True) newstate.environ = state.environ return handler(username, newstate, path, fields) @@ -617,7 +619,8 @@ mapping = dict(list=listVms, create=create, help=helpHandler, unauth=unauthFront, - overlord=overlord, + admin=admin, + overlord=admin, errortest=throwError) def printHeaders(headers): @@ -646,7 +649,7 @@ def show_error(op, username, fields, err, emsg, traceback): d = dict(op=op, user=username, fields=fields, errorMessage=str(err), stderr=emsg, traceback=traceback) details = templates.error_raw(searchList=[d]) - if username not in ('price', 'ecprice', 'andersk'): #add yourself at will + if username not in config.web.errormail_exclude: send_error_mail('xvm error on %s for %s: %s' % (op, username, err), details) d['details'] = details