DNS = {}
ValidHostNames = [] # will be initialized in later
-SSHFingerprint = re.compile('^(\d+) ([0-9a-f\:]{47}) (.+)$')
+SSHFingerprint = re.compile('^(\d+) ([0-9a-f\:]{47}|SHA256:[0-9A-Za-z/+]{43}) (.+)$')
SSHRSA1Match = re.compile('^^(.* )?\d+ \d+ \d+')
GenderTable = {"male": '1',
if not machine_regex.match(m):
return "machine specification for ssh key contains invalid characters"
if m not in ValidHostNames:
- return "unknown machine used in allowed_hosts stanza for ssh keys"
+ return "unknown machine {} used in allowed_hosts stanza for ssh keys".format(m)
(fd, path) = tempfile.mkstemp(".pub", "sshkeytry", "/tmp")
f = open(path, "w")
Subst["__USER__"] = uid
Match = SSHFingerprint.match(output)
+ if Match is None:
+ return "Failed to match SSH fingerprint, has the output of ssh-keygen changed?"
g = Match.groups()
key_size = g[0]
fingerprint = g[1]
cnamerecord = re.match("^[-\w]+\s+IN\s+CNAME\s+([-\w.]+\.)$",Str,re.IGNORECASE)
arecord = re.match('^[-\w]+\s+IN\s+A\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$',Str,re.IGNORECASE)
mxrecord = re.match("^[-\w]+\s+IN\s+MX\s+(\d{1,3})\s+([-\w.]+\.)$",Str,re.IGNORECASE)
- txtrecord = re.match("^[-\w]+\s+IN\s+TXT\s+([-\d. a-z\t<>@]+)", Str, re.IGNORECASE)
+ txtrecord = re.match("^[-\w]+\s+IN\s+TXT\s+([-\d. a-z\t<>@:]+)", Str, re.IGNORECASE)
#aaaarecord = re.match('^[-\w]+\s+IN\s+AAAA\s+((?:[0-9a-f]{1,4})(?::[0-9a-f]{1,4})*(?::(?:(?::[0-9a-f]{1,4})*|:))?)$',Str,re.IGNORECASE)
aaaarecord = re.match('^[-\w]+\s+IN\s+AAAA\s+([A-F0-9:]{2,39})$',Str,re.IGNORECASE)