X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;ds=sidebyside;f=ud-useradd;h=6c2e19d4f43286566b79793b6067a4c1d0ab6f53;hb=47efc6edcf87f1acbcd9230e0727acfc62e41761;hp=cadb7981796b99e3e000ba7c103957523eb26c4c;hpb=9d6a5c2891ae810fd92eee96a4b22d3679328b2f;p=mirror%2Fuserdir-ldap.git diff --git a/ud-useradd b/ud-useradd index cadb798..6c2e19d 100755 --- a/ud-useradd +++ b/ud-useradd @@ -7,7 +7,7 @@ from userdir_gpg import *; # This tries to search for a free UID. There are two possible ways to do # this, one is to fetch all the entires and pick the highest, the other -# is to randomly guess uids until one is free. This uses the formar. +# is to randomly guess uids until one is free. This uses the former. # Regrettably ldap doesn't have an integer attribute comparision function # so we can only cut the search down slightly def GetFreeID(l): @@ -26,13 +26,17 @@ AdminUser = pwd.getpwuid(os.getuid())[0]; # Process options ForceMail = 0; -(options, arguments) = getopt.getopt(sys.argv[1:], "u:m") +OldGPGKeyRings = GPGKeyRings; +userdir_gpg.GPGKeyRings = []; +(options, arguments) = getopt.getopt(sys.argv[1:], "u:ma") for (switch, val) in options: if (switch == '-u'): AdminUser = val; elif (switch == '-m'): ForceMail = 1; - + elif (switch == '-a'): + userdir_gpg.GPGKeyRings = OldGPGKeyRings; + print "Accessing LDAP directory as '" + AdminUser + "'"; Password = getpass(AdminUser + "'s password: "); @@ -85,6 +89,11 @@ while len(Keys[0][1]) < 40: if Res == "": break; +Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,"keyfingerprint=" + Keys[0][1]); +if len(Attrs) != 0: + print "*** This key already belongs to",GetAttr(Attrs[0],"uid"); + account = GetAttr(Attrs[0],"uid"); + # Try to get a uniq account name Update=0 while 1: @@ -93,6 +102,7 @@ while 1: account = Res; Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,"uid=" + account); if len(Attrs) == 0: + privsub = "%s@debian.org"%(account); break; Res = raw_input("That account already exists, update [no]? "); if Res == "yes": @@ -145,7 +155,6 @@ if Update == 0 or ForceMail == 1: print "Randomizing and encrypting password" Password = GenPass(); Pass = HashPass(Password); - print "PASS: ", Password; # Use GPG to encrypt it, pass the fingerprint to ID it CryptedPass = GPGEncrypt("Your new password is '" + Password + "'\n",\ @@ -187,7 +196,7 @@ Subst["__LOGIN__"] = account; Subst["__PRIVATE__"] = privsub; Subst["__EMAIL__"] = email; Subst["__PASSWORD__"] = CryptedPass; -Subst["__LISTPASS__"] = string.strip(open(pwd.getpwuid(os.getuid())[5]+"/.debian-lists_passwd","r").read()); +#Subst["__LISTPASS__"] = string.strip(open(pwd.getpwuid(os.getuid())[5]+"/.debian-lists_passwd","r").read()); # Generate the LDAP request Rec = [(ldap.MOD_REPLACE,"uid",account), @@ -235,12 +244,12 @@ if Update == 1 and ForceMail == 0: sys.exit(0); # Do the subscription/welcome message -if privsub != " ": - Sub = TemplateSubst(Subst,open(TemplatesDir+"/list-subscribe","r").read()); - Child = os.popen("/usr/sbin/sendmail -t","w"); - Child.write(Sub); - if Child.close() != None: - raise Error, "Sendmail gave a non-zero return code"; +#if privsub != " ": +# Sub = TemplateSubst(Subst,open(TemplatesDir+"/list-subscribe","r").read()); +# Child = os.popen("/usr/sbin/sendmail -t","w"); +# Child.write(Sub); +# if Child.close() != None: +# raise Error, "Sendmail gave a non-zero return code"; # Send the Welcome message print "Sending Welcome Email"