X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-useradd;h=cdaf3f8bdc839b06b3e7189198a3182817a83812;hb=45ac1f545f858c2d538b8e9bdb6532a1a0061286;hp=4d929e391477fdfbf18e09cf03c5e5b5d2b138d3;hpb=170763ef20b68dbc1b1d3324e1113b18a774ce86;p=mirror%2Fuserdir-ldap.git diff --git a/ud-useradd b/ud-useradd index 4d929e3..cdaf3f8 100755 --- a/ud-useradd +++ b/ud-useradd @@ -7,12 +7,12 @@ 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): HighestUID = 1400; - Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,\ + Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL, "uidnumber>="+str(HighestUID),["uidnumber"]); HighestUID = 0; for I in Attrs: @@ -22,12 +22,20 @@ def GetFreeID(l): return HighestUID + 1; # Main starts here +AdminUser = pwd.getpwuid(os.getuid())[0]; # Process options -(options, arguments) = getopt.getopt(sys.argv[1:], "u:") +ForceMail = 0; +OldGPGKeyRings = GPGKeyRings; +userdir_gpg.GPGKeyRings = []; +(options, arguments) = getopt.getopt(sys.argv[1:], "u:ma") for (switch, val) in options: if (switch == '-u'): - AdminUser = val + 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: "); @@ -89,6 +97,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": @@ -134,7 +143,7 @@ if uidnumber == 0: uidnumber = GetFreeID(l); # Generate a random password -if Update == 0: +if Update == 0 or ForceMail == 1: Password = raw_input("User's Password (Enter for random)? "); if Password == "": @@ -226,17 +235,21 @@ l.modify_s(Dn,Rec); print; # Abort email sends for an update operation -if Update == 1: +if Update == 1 and ForceMail == 0: print "Account is not new, Not sending mails" sys.exit(0); # Do the subscription/welcome message -if privsub != " ": - print TemplateSubst(Subst,open("templates/list-subscribe","r").read()); - +#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" -Reply = TemplateSubst(Subst,open("templates/welcome-message-"+gidnumber,"r").read()); +Reply = TemplateSubst(Subst,open(TemplatesDir+"/welcome-message-"+gidnumber,"r").read()); Child = os.popen("/usr/sbin/sendmail -t","w"); #Child = os.popen("cat","w"); Child.write(Reply);