def hostname(self):
hostname = self._properties.get("client-hostname")
+ if hostname is None:
+ return
+
# Remove any ""
- if hostname:
- hostname = hostname.replace("\"", "")
+ hostname = hostname.replace("\"", "")
- return hostname
+ # Only return valid hostnames
+ m = re.match(r"^[A-Z0-9\-]{1,63}$", hostname, re.I)
+ if m:
+ return hostname
@property
def domain(self):
@property
def fqdn(self):
- return "%s.%s" % (self.hostname, self.domain)
+ if self.hostname:
+ return "%s.%s" % (self.hostname, self.domain)
@staticmethod
def _parse_time(s):
@property
def rrset(self):
+ # If the lease does not have a valid FQDN, we cannot create any RRs
+ if self.fqdn is None:
+ return []
+
return [
# Forward record
(self.fqdn, "%s" % LOCAL_TTL, "IN A", self.ipaddr),