1*a53f50b9Schristos#!@PERL@ 2*a53f50b9Schristos 3*a53f50b9Schristos$usage=<<EOU; 4*a53f50b9SchristosUsage $0 mapname base < mapfile >mapfile.ldif 5*a53f50b9Schristos 6*a53f50b9Schristosmapname: name of the amd map beeing converted to ldif 7*a53f50b9Schristosbase : The LDAP search base. Do not forget the quotes! 8*a53f50b9Schristos 9*a53f50b9SchristosThis script should/could be used in a Makefile together 10*a53f50b9Schristoswith ldif2ldbm(8C) to automagically update the ldap 11*a53f50b9Schristosdatabases and restart slapd whenever a master copy of 12*a53f50b9Schristosthe maps have changed. Remember "cd /var/yp; make" ? 13*a53f50b9SchristosEOU 14*a53f50b9Schristos 15*a53f50b9Schristosmy $fmt = "%-12s: %s\n"; 16*a53f50b9Schristosmy $tfmt = "%-15s: %s\n"; 17*a53f50b9Schristosmy $mapname = $ARGV[0] or die $usage; 18*a53f50b9Schristosmy $base = $ARGV[1] or die $usage; 19*a53f50b9Schristos$time = time(); 20*a53f50b9Schristos 21*a53f50b9Schristosprint "dn: cn=amdmap $mapname timestamp, $base\n"; 22*a53f50b9Schristosprintf "$tfmt", "cn", "amdmap $mapname timestamp"; 23*a53f50b9Schristosprintf "$tfmt", "objectClass", "amdmapTimestamp"; 24*a53f50b9Schristosprintf "$tfmt", "amdmapName", "$mapname"; 25*a53f50b9Schristosprintf "$tfmt", "amdmapTimestamp", $time; 26*a53f50b9Schristosprintf "$tfmt", "amdmapName", $mapname; 27*a53f50b9Schristosprint "\n"; 28*a53f50b9Schristos 29*a53f50b9Schristosmy $line = ""; 30*a53f50b9Schristosmy $done = 0; 31*a53f50b9Schristos 32*a53f50b9Schristoswhile (<STDIN>) { 33*a53f50b9Schristos chomp; 34*a53f50b9Schristos if (/\s*(.+)\\\s*/) { 35*a53f50b9Schristos if ($line) { 36*a53f50b9Schristos $line .= " ".$1; 37*a53f50b9Schristos } else { 38*a53f50b9Schristos $line = $1; 39*a53f50b9Schristos } 40*a53f50b9Schristos $done = 0; 41*a53f50b9Schristos } else { 42*a53f50b9Schristos s/^\s+//g; 43*a53f50b9Schristos $line .= $_; 44*a53f50b9Schristos $done = 1; 45*a53f50b9Schristos } 46*a53f50b9Schristos if ($done) { 47*a53f50b9Schristos my @vals = split(/\s+/,$line); 48*a53f50b9Schristos my $key = shift @vals; 49*a53f50b9Schristos my $entry; 50*a53f50b9Schristos 51*a53f50b9Schristos print "dn: cn=amdmap $mapname\[$key\], $base\n"; 52*a53f50b9Schristos printf "$fmt","cn","amdmap $mapname\[$key\]"; 53*a53f50b9Schristos printf "$fmt","objectClass", "amdmap"; 54*a53f50b9Schristos printf "$fmt","amdmapName", $mapname; 55*a53f50b9Schristos printf "$fmt","amdmapKey", $key; 56*a53f50b9Schristos printf "$fmt","amdmapValue", join(' ',@vals); 57*a53f50b9Schristos print "\n"; 58*a53f50b9Schristos $line = ""; $done = 0; 59*a53f50b9Schristos } 60*a53f50b9Schristos} 61