# restricted variables.
# Copyright (c) 1999-2001 Jason Gunthorpe <jgg@debian.org>
-# Copyright (c) 2004-2005,7 Joey Schulze <joey@infodrom.org>
+# Copyright (c) 2004-2005,7,8 Joey Schulze <joey@infodrom.org>
# Copyright (c) 2001-2006 Ryan Murray <rmurray@debian.org>
# Copyright (c) 2008 Peter Palfrader <peter@palfrader.org>
# Copyright (c) 2008 Martin Zobel-Helas <zobel@debian.org>
# Copyright (c) 2008 Marc 'HE' Brockschmidt <he@debian.org>
# Copyright (c) 2008 Mark Hymers <mhy@debian.org>
+# Copyright (c) 2008 Thomas Viehmann <tv@beamnet.de>
#
# 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
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-import time, os, pwd, sys, getopt, ldap, crypt, readline, copy;
+import time, os, pwd, sys, getopt, ldap, crypt, readline, copy, getpass
from userdir_ldap import *;
RootMode = 0;
"mailRBL": ["Mail RBLs",22],
"mailRHSBL": ["Mail RHSBLs",23],
"mailWhitelist": ["Mail Whitelist",24],
- "VoIP": ["VoIP Address",25],
+ "mailContentInspectionAction": ["mail C-I Action",25],
+ "VoIP": ["VoIP Address",26],
"comment": ["Comment",116],
"userPassword": ["Crypted Password",117],
"dnsZoneEntry": ["d.net Entry",118],
"mailRBL": ["SMTP time RBL lists"],
"mailRHSBL": ["SMTP time RHSBL lists"],
"mailWhitelist": ["SMTP time whitelist from other checks"],
+ "mailContentInspectionAction": ["Content Inspection Action (reject, blackhole, markup)"],
"member": ["LDAP Group Member for slapd ACLs"],
"latitude": ["XEarth latitude in ISO 6709 format - see /usr/share/zoneinfo/zone.tab or etak.com"],
"longitude": ["XEarth latitude in ISO 6709 format - see /usr/share/zoneinfo/zone.tab or etak.com"],
Keys.sort();
for at in Keys:
if at < 100 or RootMode != 0:
- print " %3u) %-18s: " % (at,OrderedIndex[at][0]),
+ print " %3u) %-19s: " % (at,OrderedIndex[at][0]),
for x in OrderedIndex[at][1]:
print "'%s'" % (re.sub('[\n\r]','?',x)),
print;
Attrs[1][Attr] = [""];
return;
+ if (Attr == "mailGreylisting" or Attr == "mailCallout"):
+ if (NewValue.lower() != "true" and NewValue.lower() != "false"):
+ if (NewValue == "1"): NewValue = "true"
+ else:
+ if (NewValue == "0"): NewValue = "false"
+ else:
+ print "Need a boolean value"
+ return
+ NewValue = NewValue.upper()
+
# Set a new value
print "Setting.",;
l.modify_s(UserDn,[(ldap.MOD_REPLACE,Attr,NewValue)]);
(ldap.MOD_REPLACE,"shadowExpire","1")];
if DisableMail:
recs.append( (ldap.MOD_REPLACE,"mailDisableMessage","account locked") )
- Attrs[0][1]["shadowLastChange"] = [shadowLast];
+ Attrs[0][1]["mailDisableMessage"] = ["account locked"];
l.modify_s(UserDn,recs);
Attrs[0][1]["userPassword"] = ["{crypt}*LK*"];
- Attrs[0][1]["mailDisableMessage"] = ["account locked"];
+ Attrs[0][1]["shadowLastChange"] = [shadowLast];
Attrs[0][1]["shadowExpire"] = ["1"];
# Main program starts here
print "as '" + BindUser + "'";
else:
print;
-if (BindUser != ""):
- Password = getpass(BindUser + "'s password: ");
# Connect to the ldap server
l = connectLDAP()
-UserDn = "uid=" + BindUser + "," + BaseDn;
+UserDn = "uid=" + User + "," + BaseDn
if (BindUser != ""):
- l.simple_bind_s(UserDn,Password);
+ Password = getpass.getpass(BindUser + "'s password: ")
+ BindUserDn = "uid=" + BindUser + "," + BaseDn
else:
- l.simple_bind_s("","");
-UserDn = "uid=" + User + "," + BaseDn;
+ Password = ""
+ BindUserDn = ""
+try:
+ l.simple_bind_s(BindUserDn,Password)
+except ldap.LDAPError,e:
+ print >> sys.stderr, "LDAP error:", e.args[0]['desc']
+ print >> sys.stderr, " ", e.args[0]['info']
+ sys.exit(1)
# Enable changing of supplementary gid's
if (RootMode == 1):
print "contain spaces and other special characters. No checking is done on the";
print "strength of the passwords so pick good ones please!";
- Pass1 = getpass(User + "'s new password: ");
- Pass2 = getpass(User + "'s new password again: ");
+ Pass1 = getpass.getpass(User + "'s new password: ")
+ Pass2 = getpass.getpass(User + "'s new password again: ")
if Pass1 != Pass2:
print "Passwords did not match";
raw_input("Press a key");