X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-useradd;h=4d929e391477fdfbf18e09cf03c5e5b5d2b138d3;hb=673cf786753eb8952598ecf3e67cbbaa4f80f5e9;hp=b875470d9ed1807c5a9ba50d9514322bd3025f2b;hpb=c50d88536a4feb3087d1aa802e110250cb2861fc;p=mirror%2Fuserdir-ldap.git diff --git a/ud-useradd b/ud-useradd index b875470..4d929e3 100755 --- a/ud-useradd +++ b/ud-useradd @@ -1,12 +1,10 @@ #!/usr/bin/env python # -*- mode: python -*- -import string, re, time, ldap, getopt, sys, posix, pwd; +import string, re, time, ldap, getopt, sys, os, pwd; from userdir_ldap import *; from userdir_gpg import *; -AddressSplit = re.compile("(.*).*<([^@]*)@([^>]*)>"); - # 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. @@ -14,7 +12,8 @@ AddressSplit = re.compile("(.*).*<([^@]*)@([^>]*)>"); # so we can only cut the search down slightly def GetFreeID(l): HighestUID = 1400; - Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,"uidnumber>="+str(HighestUID),["uidnumber"]); + Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,\ + "uidnumber>="+str(HighestUID),["uidnumber"]); HighestUID = 0; for I in Attrs: ID = int(GetAttr(I,"uidnumber","0")); @@ -63,13 +62,10 @@ while (1): # Crack up the email address from the key into a best guess # first/middle/last name -Match = AddressSplit.match(Keys[0][2]); -if Match == None: - (cn,mn,sn,email,account) = ('','','','',''); -else: - (cn,mn,sn) = NameSplit(re.sub('["]','',Match.groups()[0])) - email = Match.groups()[1] + '@' + Match.groups()[2]; - account = Match.groups()[1]; +Addr = SplitEmail(Keys[0][2]); +(cn,mn,sn) = NameSplit(re.sub('["]','',Addr[0])) +email = Addr[1] + '@' + Addr[2]; +account = Addr[1]; privsub = email; gidnumber = str(DefaultGID); @@ -181,13 +177,13 @@ if Res != "yes": # Initialize the substitution Map Subst = {} Subst["__REALNAME__"] = FullName; -Subst["__WHOAMI__"] = pwd.getpwuid(posix.getuid())[0]; +Subst["__WHOAMI__"] = pwd.getpwuid(os.getuid())[0]; Subst["__DATE__"] = time.strftime("%a, %d %b %Y %H:%M:%S +0000",time.gmtime(time.time())); Subst["__LOGIN__"] = account; Subst["__PRIVATE__"] = privsub; Subst["__EMAIL__"] = email; Subst["__PASSWORD__"] = CryptedPass; -Subst["__LISTPASS__"] = string.strip(open(pwd.getpwuid(posix.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), @@ -241,8 +237,8 @@ if privsub != " ": # Send the Welcome message print "Sending Welcome Email" Reply = TemplateSubst(Subst,open("templates/welcome-message-"+gidnumber,"r").read()); -Child = posix.popen("/usr/sbin/sendmail -t","w"); -#Child = posix.popen("cat","w"); +Child = os.popen("/usr/sbin/sendmail -t","w"); +#Child = os.popen("cat","w"); Child.write(Reply); if Child.close() != None: raise Error, "Sendmail gave a non-zero return code";