X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=ud-arbimport;h=90a1746e3e350ca99404157768e933048bbc659e;hp=cf57cbc0c0c3eddb0718088facda3cf62826bff6;hb=HEAD;hpb=c50d88536a4feb3087d1aa802e110250cb2861fc diff --git a/ud-arbimport b/ud-arbimport index cf57cbc..90a1746 100755 --- a/ud-arbimport +++ b/ud-arbimport @@ -1,10 +1,28 @@ #!/usr/bin/env python # -*- mode: python -*- + +# Copyright (c) 1999 Jason Gunthorpe +# Copyright (c) 2004 Joey Schulze +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + # This script imports arbitary lists of data. The input is a file with # the form of: # uid: -import string, re, time, ldap, getopt, sys; +import re, time, ldap, getopt, sys; from userdir_ldap import *; # Process options @@ -18,29 +36,42 @@ for (switch, val) in options: NoAct = 1; if len(arguments) == 0: print "Give the key to assignt to then the file to import"; - os.exit(0); + sys.exit(0) # Main program starts here -print "Accessing LDAP directory as '" + AdminUser + "'"; -Password = getpass(AdminUser + "'s password: "); +l = passwdAccessLDAP(BaseDn, AdminUser) -# Connect to the ldap server -l = ldap.open(LDAPServer); -UserDn = "uid=" + AdminUser + "," + BaseDn; -l.simple_bind_s(UserDn,Password); - -# Read the override file into the unknown map. The override file is a list -# of colon delimited entires mapping PGP email addresess to local users List = open(arguments[1],"r"); +Set = []; +User = None; while(1): Line = List.readline(); - if Line == "": - break; - Split = re.split("[:\n]",Line); + if Line != "": + # Glob similar lines + Split = re.split("[:\n]",Line); + if User == None: + User = Split[0]; + if Split[0] == User: + Set.append(Split[1].strip()); + continue; + else: + if len(Set) == 0: + break; - Rec = [(ldap.MOD_REPLACE,arguments[0],string.strip(Split[1]))]; - Dn = "uid=" + Split[0] + "," + BaseDn; + # Generate the command.. + Rec = [(ldap.MOD_REPLACE,arguments[0],Set[0])]; + for x in Set[1:]: + Rec.append((ldap.MOD_ADD,arguments[0],x)) + + Dn = "uid=" + User + "," + BaseDn; try: + print Dn,Rec; l.modify_s(Dn,Rec); except: print "Failed",Dn; + + # Out of data.. + if Line == "": + break; + User = Split[0]; + Set = [Split[1].strip()];