X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-mailgate;h=63411303f2ae2b168a84a437a91543cdf65f1db3;hb=595923978a9ad55f4ec55b1aabef44683b111911;hp=b158ba885b813fd548f8b09694075cbf7f8ed259;hpb=a9ebb6f2afbf0fbc0e94ab73726dedb6a8ae5d75;p=mirror%2Fuserdir-ldap.git diff --git a/ud-mailgate b/ud-mailgate index b158ba8..6341130 100755 --- a/ud-mailgate +++ b/ud-mailgate @@ -30,7 +30,7 @@ SeenList = {} DNS = {} SSHFingerprint = re.compile('^(\d+) ([0-9a-f\:]{47}) (.+)$') -SSHRSA1Match = re.compile('^\d+ (\d+) \d+ .*') +SSHRSA1Match = re.compile('^^(.* )?\d+ \d+ \d+') ArbChanges = {"c": "..", "l": ".*", @@ -239,10 +239,12 @@ def LoadBadSSH(): # [options] 1024 35 13188913666680[..] [comment] def DoSSH(Str, Attrs, badkeys, uid): Match = SSH2AuthSplit.match(Str); + if Match == None: + return None; g = Match.groups() typekey = g[1] if Match == None: - Match =SSHRSA1Match.match(Str) + Match = SSHRSA1Match.match(Str) if Match is not None: return "RSA1 keys not supported anymore" return None; @@ -465,7 +467,7 @@ def HandleChange(Reply,DnRecord,Key): Result = Result + Res + "\n"; # Connect to the ldap server - l = ldap.open(LDAPServer); + l = connectLDAP() F = open(PassDir+"/pass-"+pwd.getpwuid(os.getuid())[0],"r"); AccessPass = F.readline().strip().split(" ") F.close(); @@ -536,7 +538,7 @@ def HandleChPass(Reply,DnRecord,Key): Reply = Reply + TemplateSubst(Subst,open(TemplatesDir+"passwd-changed","r").read()); # Connect to the ldap server - l = ldap.open(LDAPServer); + l = connectLDAP() F = open(PassDir+"/pass-"+pwd.getpwuid(os.getuid())[0],"r"); AccessPass = F.readline().strip().split(" ") F.close(); @@ -549,7 +551,8 @@ def HandleChPass(Reply,DnRecord,Key): raise Error, "This account is locked"; # Modify the password - Rec = [(ldap.MOD_REPLACE,"userPassword","{crypt}"+Pass)]; + Rec = [(ldap.MOD_REPLACE,"userPassword","{crypt}"+Pass), + (ldap.MOD_REPLACE,"shadowLastChange",str(int(time.time()/24/60/60)))]; Dn = "uid=" + GetAttr(DnRecord,"uid") + "," + BaseDn; l.modify_s(Dn,Rec); @@ -613,7 +616,7 @@ try: ErrType = EX_TEMPFAIL; ErrMsg = "An error occured while performing the LDAP lookup"; global l; - l = ldap.open(LDAPServer); + l = connectLDAP() l.simple_bind_s("",""); # Search for the matching key fingerprint