X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=ud-info;h=3db064800f8eb03d51f6642d81af4f3bb8690d00;hp=a94ff91a328acdc8326193df17462a51bc34964a;hb=HEAD;hpb=86a2cb531c55baec854944024f243e4d9def08e9 diff --git a/ud-info b/ud-info index a94ff91..3db0648 100755 --- a/ud-info +++ b/ud-info @@ -18,12 +18,13 @@ # restricted variables. # Copyright (c) 1999-2001 Jason Gunthorpe -# Copyright (c) 2004-2005,7 Joey Schulze +# Copyright (c) 2004-2005,7,8 Joey Schulze # Copyright (c) 2001-2006 Ryan Murray -# Copyright (c) 2008 Peter Palfrader +# Copyright (c) 2008,2009 Peter Palfrader # Copyright (c) 2008 Martin Zobel-Helas # Copyright (c) 2008 Marc 'HE' Brockschmidt # Copyright (c) 2008 Mark Hymers +# Copyright (c) 2008 Thomas Viehmann # # 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 @@ -39,7 +40,7 @@ # 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; @@ -67,7 +68,6 @@ AttrInfo = {"cn": ["First Name", 101], "icqUin": ["ICQ UIN",14], "jabberJID": ["Jabber ID",15], "privateSub": ["Debian-Private",16], - "gender": ["Gender",17], "birthDate": ["Date of Birth",18], "mailDisableMessage": ["Mail Disabled",19], "mailGreylisting": ["Mail Greylisting",20], @@ -75,7 +75,8 @@ AttrInfo = {"cn": ["First Name", 101], "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], @@ -101,7 +102,6 @@ AttrPrompt = {"cn": ["Common name or first name"], "supplementaryGid": ["Groups the user is in"], "allowedHost": ["Grant access to certain hosts"], "privateSub": ["Debian-Private mailing list subscription"], - "gender": ["ISO5218 Gender code (1=male,2=female,9=unspecified)"], "birthDate": ["Date of Birth (YYYYMMDD)"], "mailDisableMessage": ["Error message to return via SMTP"], "mailGreylisting": ["SMTP Greylisting (TRUE/FALSE)"], @@ -109,6 +109,7 @@ AttrPrompt = {"cn": ["Common name or first name"], "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"], @@ -216,7 +217,7 @@ def ShowAttrs(Attrs): 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; @@ -249,6 +250,16 @@ def ChangeAttr(Attrs,Attr): 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)]); @@ -299,10 +310,10 @@ def Lock(UserDn, Attrs, DisableMail=True): (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 @@ -335,17 +346,22 @@ if (BindUser != User): 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): @@ -406,8 +422,8 @@ while(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"); @@ -444,7 +460,7 @@ while(1): print "Set account to:" print " 1) retiring (lock account but do not disable mail):" - print " 2) retired (lock account and disable mail):" + print " 2) inactive (removed/emeritus/... - lock account and disable mail):" print " 3) memorial (lock account and disable mail):" print " 4) active (do not change other settings, you will have to deal with them)" print " q) return (no change)" @@ -454,7 +470,7 @@ while(1): if Resp == "1": newstatus = "retiring %s"%(time.strftime("%Y-%m-%d")) else: - newstatus = "retired %s"%(time.strftime("%Y-%m-%d")) + newstatus = "inactive %s"%(time.strftime("%Y-%m-%d")) l.modify_s(UserDn,[(ldap.MOD_REPLACE,"accountStatus",newstatus)]) Attrs[0][1]["accountStatus"] = [newstatus]