X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-useradd;h=075b20b62f9d1742824c31a5528dc0a5ef7047c3;hb=c1f768412991931629160580640b1850609b2b5a;hp=88724322f03b8b247bb656952f749ce0cf7f5eb5;hpb=98329767f49b28aa04f8afd21b63b69800ff4137;p=mirror%2Fuserdir-ldap.git diff --git a/ud-useradd b/ud-useradd index 8872432..075b20b 100755 --- a/ud-useradd +++ b/ud-useradd @@ -57,22 +57,7 @@ for (switch, val) in options: elif (switch == '-a'): userdir_gpg.GPGKeyRings = OldGPGKeyRings; -print "Accessing LDAP directory as '" + AdminUser + "'"; -while (1): - Password = getpass(AdminUser + "'s password: "); - - if len(Password) == 0: - sys.exit(0) - - l = ldap.open(LDAPServer); - UserDn = "uid=" + AdminUser + "," + BaseDn; - - # Connect to the ldap server - try: - l.simple_bind_s(UserDn,Password); - except ldap.INVALID_CREDENTIALS: - continue - break +l = passwdAccessLDAP(LDAPServer, BaseDn, AdminUser) # Locate the key of the user we are adding SetKeyrings(["/org/keyring.debian.org/keyrings/debian-keyring.gpg"]) @@ -112,24 +97,26 @@ uidNumber = 0; # Decide if we should use IDEA encryption UsePGP2 = 0; while len(Keys[0][1]) < 40: - Res = raw_input("Use PGP2.x compatibility [no]? "); + Res = raw_input("Use PGP2.x compatibility [No/yes]? "); if Res == "yes": UsePGP2 = 1; break; if Res == "": break; +Update = 0 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"); + Update = 1 # Try to get a uniq account name -Update=0 while 1: - Res = raw_input("Login account [" + account + "]? "); - if Res != "": - account = Res; + if Update == 0: + Res = raw_input("Login account [" + account + "]? "); + if Res != "": + account = Res; Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,"uid=" + account); if len(Attrs) == 0: privsub = "%s@debian.org"%(account); @@ -148,6 +135,8 @@ while 1: if privsub == None or privsub == "": privsub = " "; break; + else: + sys.exit(1) # Prompt for the first/last name and email address Res = raw_input("First name [" + cn + "]? "); @@ -171,7 +160,7 @@ if Res != "": # GID Res = raw_input("Group ID Number [" + gidNumber + "]? "); if Res != "": - gidNumber = Res; + gidNumber = Group2GID(Res); # UID if uidNumber == 0: @@ -249,10 +238,11 @@ if Update == 0: ("shadowMin","0"), ("shadowMax","99999"), ("shadowWarning","7"), - ("privateSub",privsub), ("userPassword","{crypt}"+Pass)]; if mn: Details.append(("mn",mn)); + if privsub != " ": + Details.append(("privateSub",privsub)) l.add_s(Dn,Details); else: # Modification