#!/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.
# 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"));
# 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);
# 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),
# 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";