include a return address in error mail
[invirt/packages/invirt-web.git] / code / validation.py
index 39c0084..ecd8b9f 100644 (file)
@@ -7,7 +7,7 @@ import string
 import dns.resolver
 from invirt.database import Machine, NIC, Type, Disk, CDROM, Autoinstall
 from invirt.config import structs as config
 import dns.resolver
 from invirt.database import Machine, NIC, Type, Disk, CDROM, Autoinstall
 from invirt.config import structs as config
-from webcommon import InvalidInput
+from invirt.common import InvalidInput
 
 MAX_MEMORY_TOTAL = 512
 MAX_MEMORY_SINGLE = 256
 
 MAX_MEMORY_TOTAL = 512
 MAX_MEMORY_SINGLE = 256
@@ -44,9 +44,7 @@ class Validate:
         owner = testOwner(username, owner, machine)
         if owner is not None:
             self.owner = owner
         owner = testOwner(username, owner, machine)
         if owner is not None:
             self.owner = owner
-        admin = testAdmin(username, admin, machine)
-        if admin is not None:
-            self.admin = admin
+        self.admin = testAdmin(username, admin, machine)
         contact = testContact(username, contact, machine)
         if contact is not None:
             self.contact = contact
         contact = testContact(username, contact, machine)
         if contact is not None:
             self.contact = contact
@@ -218,7 +216,7 @@ def testAdmin(user, admin, machine):
     if admin is None:
         return None
     if machine is not None and admin == machine.administrator:
     if admin is None:
         return None
     if machine is not None and admin == machine.administrator:
-        return None
+        return admin
     if admin == user:
         return admin
     if ':' not in admin:
     if admin == user:
         return admin
     if ':' not in admin:
@@ -273,15 +271,17 @@ def testName(user, name, machine=None):
         return None
     try:
         hostname = '%s.%s.' % (name, config.dns.domains[0])
         return None
     try:
         hostname = '%s.%s.' % (name, config.dns.domains[0])
+        resolver = dns.resolver.Resolver()
+        resolver.nameservers = ['127.0.0.1']
         try:
         try:
-            dns.resolver.query(hostname, 'A')
+            resolver.query(hostname, 'A')
         except dns.resolver.NoAnswer, e:
             # If we can get the TXT record, then we can verify it's
             # reserved. If this lookup fails, let it bubble up and be
             # dealt with
         except dns.resolver.NoAnswer, e:
             # If we can get the TXT record, then we can verify it's
             # reserved. If this lookup fails, let it bubble up and be
             # dealt with
-            answer = dns.resolver.query(hostname, 'TXT')
+            answer = resolver.query(hostname, 'TXT')
             txt = answer[0].strings[0]
             txt = answer[0].strings[0]
-            if txt.startswith('Reserved'):
+            if txt.startswith('reserved'):
                 raise InvalidInput('name', name, 'The name you have requested has been %s. For more information, contact us at %s' % (txt, config.dns.contact))
 
         # If the hostname didn't exist, it would have thrown an
                 raise InvalidInput('name', name, 'The name you have requested has been %s. For more information, contact us at %s' % (txt, config.dns.contact))
 
         # If the hostname didn't exist, it would have thrown an