# Copyright (c) 1999-2000 Jason Gunthorpe <jgg@debian.org>
# Copyright (c) 2001-2003 James Troup <troup@debian.org>
# Copyright (c) 2004 Joey Schulze <joey@infodrom.org>
+# Copyright (c) 2008,2009,2010 Peter Palfrader <peter@palfrader.org>
#
# 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
from userdir_ldap import *;
from userdir_gpg import *;
+HavePrivateList = getattr(ConfModule, "haveprivatelist", True)
+
# 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 former.
if Res != "":
cn = Res;
Res = raw_input("Middle name [" + mn + "]? ");
-if Res != "":
+if Res == " ":
+ mn = ""
+elif Res != "":
mn = Res;
Res = raw_input("Last name [" + sn + "]? ");
if Res != "":
emailaddr = Res;
# Debian-Private subscription
-Res = raw_input("Subscribe to debian-private (space is none) [" + privsub + "]? ");
-if Res != "":
- privsub = Res;
+if HavePrivateList:
+ Res = raw_input("Subscribe to debian-private (space is none) [" + privsub + "]? ");
+ if Res != "":
+ privsub = Res;
+else:
+ privsub = " "
(uidNumber, generatedGID) = GetFreeID(l)
if not gidNumber:
Res = raw_input("Group ID Number (default group is %s, new usergroup %s) [%s]" % (DefaultGID, generatedGID, gidNumber));
if Res != "":
if Res.isdigit():
- gidNumber = Res;
+ gidNumber = int(Res);
else:
gidNumber = Group2GID(l, Res);
print " %s <%s@%s>:" % (FullName,account,EmailAppend);
print " Assigned UID:",uidNumber," GID:", gidNumber;
print " Email forwarded to:",emailaddr
-print " Private Subscription:",privsub;
+if HavePrivateList:
+ print " Private Subscription:",privsub;
print " GECOS Field: \"%s,,,,\"" % (FullName);
print " Login Shell: /bin/bash";
print " Key Fingerprint:",Keys[0][1];
# Initialize the substitution Map
Subst = {}
-encto = ''
+encrealname = ''
try:
- encto = FullName.decode('us-ascii')
+ encrealname = FullName.decode('us-ascii')
except UnicodeError:
- encto = email.Header.Header(FullName, 'utf-8', 200) + " " + emailaddr
+ encrealname = str(email.Header.Header(FullName, 'utf-8', 200))
-subjstring = "New Debian Maintainer " + FullName
-encsubj = ''
-try:
- encsubj = subjstring.decode('us-ascii')
-except UnicodeError:
- encsubj = email.Header.Header(subjstring, 'utf-8', 200)
-
-Subst["__HEADER_SUBJ__"] = encsubj
-Subst["__HEADER_EMAIL"] = encto
+Subst["__ENCODED_REALNAME__"] = encrealname
Subst["__REALNAME__"] = FullName;
Subst["__WHOAMI__"] = pwd.getpwuid(os.getuid())[0];
Subst["__DATE__"] = time.strftime("%a, %d %b %Y %H:%M:%S +0000",time.gmtime(time.time()));
Details.append(("mn",mn));
if privsub != " ":
Details.append(("privateSub",privsub))
+ l.add_s(Dn,Details);
#Add user group if needed, then the actual user:
if UserGroup == 1:
Dn = "gid=" + account + "," + BaseDn;
l.add_s(Dn,[("gid",account), ("gidNumber",str(gidNumber)), ("objectClass", GroupObjectClasses)])
-
- l.add_s(Dn,Details);
else:
# Modification
Rec = [(ldap.MOD_REPLACE,"uidNumber",str(uidNumber)),
# Send the Welcome message
print "Sending Welcome Email"
-Reply = TemplateSubst(Subst,open(TemplatesDir + "/welcome-message-%d" % gidNumber, "r").read())
+templatepath = TemplatesDir + "/welcome-message-%d" % int(gidNumber)
+if not os.path.exists(templatepath):
+ templatepath = TemplatesDir + "/welcome-message"
+Reply = TemplateSubst(Subst,open(templatepath, "r").read())
Child = os.popen("/usr/sbin/sendmail -t","w");
#Child = os.popen("cat","w");
Child.write(Reply);