X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-useradd;h=075b20b62f9d1742824c31a5528dc0a5ef7047c3;hb=c1f768412991931629160580640b1850609b2b5a;hp=a7b5f391ce92fceeea7f68b9b1a0c5718173daeb;hpb=053bb4b41bf0e7116359fda6e4ed2e6c804ba72d;p=mirror%2Fuserdir-ldap.git diff --git a/ud-useradd b/ud-useradd index a7b5f39..075b20b 100755 --- a/ud-useradd +++ b/ud-useradd @@ -1,6 +1,24 @@ #!/usr/bin/env python # -*- mode: python -*- +# Copyright (c) 1999-2000 Jason Gunthorpe +# Copyright (c) 2001-2003 James Troup +# Copyright (c) 2004 Joey Schulze +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + import string, re, time, ldap, getopt, sys, os, pwd; from userdir_ldap import *; from userdir_gpg import *; @@ -39,34 +57,20 @@ 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"]) while (1): Foo = raw_input("Who are you going to add (for a GPG search)? "); if Foo == "": - continue; + sys.exit(0); Keys = GPGKeySearch(Foo); if len(Keys) == 0: - print "Sorry, that search did not turn up any keys"; + print "Sorry, that search did not turn up any keys." + print "Has it been added to the Debian keyring already?" continue; if len(Keys) > 1: print "Sorry, more than one key was found, please specify the key to use by\nfingerprint:"; @@ -93,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); @@ -129,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 + "]? "); @@ -152,7 +160,7 @@ if Res != "": # GID Res = raw_input("Group ID Number [" + gidNumber + "]? "); if Res != "": - gidNumber = Res; + gidNumber = Group2GID(Res); # UID if uidNumber == 0: @@ -230,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