... 3.2 ...
[zonemaker.git] / zonemaker / zone.py
index 4da0906cb3bdb7490430689b929b65733326c2ea..add2bde8c4df333b6f17baa70318d53435df096a 100644 (file)
@@ -13,12 +13,14 @@ REGEX_ipv4  = r'^\d{1,3}(\.\d{1,3}){3}$'
 REGEX_ipv6  = r'^[a-fA-F0-9]{1,4}(:[a-fA-F0-9]{1,4}){7}$'
 
 def check_label(label: str) -> str:
+    label = str(label)
     pattern = r'^{0}$'.format(REGEX_label)
     if re.match(pattern, label):
         return label
     raise Exception(label+" is not a valid label")
 
 def check_hostname(name: str) -> str:
+    name = str(name)
     # check hostname for validity
     pattern = r'^{0}(\.{0})*\.?$'.format(REGEX_label)
     if re.match(pattern, name):
@@ -26,16 +28,19 @@ def check_hostname(name: str) -> str:
     raise Exception(name+" is not a valid hostname")
 
 def check_hex(data: str) -> str:
+    data = str(data)
     if re.match('^[a-fA-F0-9]+$', data):
         return data
     raise Exception(data+" is not valid hex data")
 
 def check_ipv4(address: str) -> str:
+    address = str(address)
     if re.match(REGEX_ipv4, address):
         return address
     raise Exception(address+" is not a valid IPv4 address")
 
 def check_ipv6(address: str) -> str:
+    address = str(address)
     if re.match(REGEX_ipv6, address):
         return address
     raise Exception(address+" is not a valid IPv6 address")
@@ -253,7 +258,7 @@ class Zone:
         try:
             with open(self._serialfile) as f:
                 cur_serial = int(f.read())
-        except FileNotFoundError:
+        except (OSError, IOError): # FileNotFoundError has been added in Python 3.3
             pass
         # increment serial
         cur_serial += 1