+if Update == 0:
+ # New account
+ Details = [("uid",account),
+ ("objectClass",
+ ("top","inetOrgPerson","debianAccount","shadowAccount","debianDeveloper")),
+ ("uidNumber",str(uidNumber)),
+ ("gidNumber",str(gidNumber)),
+ ("gecos",FullName+",,,,"),
+ ("loginShell","/bin/bash"),
+ ("keyFingerPrint",Keys[0][1]),
+ ("cn",cn),
+ ("sn",sn),
+ ("emailForward",email),
+ ("shadowLastChange",str(int(time.time()/24/60/60))),
+ ("shadowMin","0"),
+ ("shadowMax","99999"),
+ ("shadowWarning","7"),
+ ("privateSub",privsub),
+ ("userPassword","{crypt}"+Pass)];
+ if mn:
+ Details.append(("mn",mn));
+ l.add_s(Dn,Details);
+else:
+ # Modification
+ Rec = [(ldap.MOD_REPLACE,"uidNumber",str(uidNumber)),
+ (ldap.MOD_REPLACE,"gidNumber",str(gidNumber)),
+ (ldap.MOD_REPLACE,"gecos",FullName+",,,,"),
+ (ldap.MOD_REPLACE,"loginShell","/bin/bash"),
+ (ldap.MOD_REPLACE,"keyFingerPrint",Keys[0][1]),
+ (ldap.MOD_REPLACE,"cn",cn),
+ (ldap.MOD_REPLACE,"mn",mn),
+ (ldap.MOD_REPLACE,"sn",sn),
+ (ldap.MOD_REPLACE,"emailForward",email),
+ (ldap.MOD_REPLACE,"shadowLastChange",str(int(time.time()/24/60/60))),
+ (ldap.MOD_REPLACE,"shadowMin","0"),
+ (ldap.MOD_REPLACE,"shadowMax","99999"),
+ (ldap.MOD_REPLACE,"shadowWarning","7"),
+ (ldap.MOD_REPLACE,"shadowInactive",""),
+ (ldap.MOD_REPLACE,"shadowExpire","")];
+ if privsub != " ":
+ Rec.append((ldap.MOD_REPLACE,"privateSub",privsub));
+ if Pass != None:
+ Rec.append((ldap.MOD_REPLACE,"userPassword","{crypt}"+Pass));
+ # Do it
+ l.modify_s(Dn,Rec);
+