X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=ud-mailgate;h=2e16cceb4c2593d7f337c15cc420d4f45f857737;hp=6be9f5d288380ac1c77b6f88a04be44052bbbb16;hb=3d16d7241cf06321448a87f7a5051670b084d250;hpb=72a27e22b8ecfabe014950a03075475fa5060d3a diff --git a/ud-mailgate b/ud-mailgate index 6be9f5d..2e16cce 100755 --- a/ud-mailgate +++ b/ud-mailgate @@ -322,31 +322,19 @@ def DoSSH(Str, Attrs, badkeys, uid): Match = SSHFingerprint.match(output) g = Match.groups() + key_size = g[0] + fingerprint = g[1] - if typekey == "ssh-rsa": - key_size_ok = (g[0] >= 2048) + if typekey == "rsa": + key_size_ok = (int(key_size) >= 2048) elif typekey == "ed25519": key_size_ok = True else: key_size_ok = False if not key_size_ok: - try: - # Body - Subst["__ERROR__"] = "SSH key fails formal criteria. We only accept RSA keys (>= 2048 bits) or ed25519 keys." % (g[0]) - ErrReply = TemplateSubst(Subst,open(TemplatesDir+"admin-info","r").read()) - - Child = os.popen("/usr/sbin/sendmail -t","w") - Child.write(ErrReplyHead) - Child.write(ErrReply) - if Child.close() != None: - raise UDExecuteError, "Sendmail gave a non-zero return code" - except: - sys.exit(EX_TEMPFAIL) - - # And now break and stop processing input, which sends a reply to the user. - raise UDFormatError, "SSH key fails formal criteria, NOTHING MODIFIED AT ALL" - elif g[1] in badkeys: + return "SSH key fails formal criteria, not added. We only accept RSA keys (>= 2048 bits) or ed25519 keys." + elif fingerprint in badkeys: try: # Body Subst["__ERROR__"] = "SSH key with fingerprint %s known as bad key" % (g[1])