sipb-xen-www depends on AFS and python-flup
[invirt/packages/invirt-web.git] / code / main.py
index 8506ee5..dd36b1b 100755 (executable)
@@ -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 '<p>STDERR:</p><pre>' + str(addition) + '</pre>'
 
 Template.database = database
+Template.config = config
 Template.helppopup = staticmethod(helppopup)
 Template.err = None
 
@@ -468,6 +469,10 @@ active machines.""",
 setting <tt>fb=false</tt> to disable the framebuffer.  If you don't,
 your machine will run just fine, but the applet's display of the
 console will suffer artifacts.
+""",
+                    'Windows': """
+<strong>Windows Vista:</strong> The Vista image is licensed for all MIT students and will automatically activate off the network; see <a href="/static/msca-email.txt">the licensing confirmation e-mail</a> for details. The installer req    uires 512 MB RAM and at least 7.5 GB disk space (15 GB or more recommended).<br>
+<strong>Windows XP:</strong> This is the volume license CD image. You will need your own volume license key to complete the install. We do not have these available for the general MIT community; ask your department if they have one.
 """
                     }
 
@@ -594,14 +599,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 +623,8 @@ mapping = dict(list=listVms,
                create=create,
                help=helpHandler,
                unauth=unauthFront,
-               overlord=overlord,
+               admin=admin,
+               overlord=admin,
                errortest=throwError)
 
 def printHeaders(headers):
@@ -646,7 +653,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