1998-08-23 22:07:21 +00:00
|
|
|
#!@PERL@
|
|
|
|
|
|
|
|
$usage=<<EOU;
|
|
|
|
Usage $0 mapname base < mapfile >mapfile.ldif
|
|
|
|
|
|
|
|
mapname: name of the amd map beeing converted to ldif
|
|
|
|
base : The LDAP search base. Do not forget the quotes!
|
|
|
|
|
|
|
|
This script should/could be used in a Makefile together
|
|
|
|
with ldif2ldbm(8C) to automagically update the ldap
|
|
|
|
databases and restart slapd whenever a master copy of
|
|
|
|
the maps have changed. Remember "cd /var/yp; make" ?
|
|
|
|
EOU
|
|
|
|
|
|
|
|
my $fmt = "%-12s: %s\n";
|
|
|
|
my $tfmt = "%-15s: %s\n";
|
|
|
|
my $mapname = $ARGV[0] or die $usage;
|
|
|
|
my $base = $ARGV[1] or die $usage;
|
|
|
|
$time = time();
|
|
|
|
|
2007-12-05 15:48:03 +00:00
|
|
|
print "dn: cn=amdmap $mapname timestamp, $base\n";
|
|
|
|
printf "$tfmt", "cn", "amdmap $mapname timestamp";
|
1998-08-23 22:07:21 +00:00
|
|
|
printf "$tfmt", "objectClass", "amdmapTimestamp";
|
2007-12-05 15:48:03 +00:00
|
|
|
printf "$tfmt", "amdmapName", "$mapname";
|
1998-08-23 22:07:21 +00:00
|
|
|
printf "$tfmt", "amdmapTimestamp", $time;
|
2007-12-05 15:48:03 +00:00
|
|
|
printf "$tfmt", "amdmapName", $mapname;
|
1998-08-23 22:07:21 +00:00
|
|
|
print "\n";
|
|
|
|
|
|
|
|
my $line = "";
|
|
|
|
my $done = 0;
|
|
|
|
|
|
|
|
while (<STDIN>) {
|
|
|
|
chomp;
|
|
|
|
if (/\s*(.+)\\\s*/) {
|
|
|
|
if ($line) {
|
|
|
|
$line .= " ".$1;
|
|
|
|
} else {
|
|
|
|
$line = $1;
|
|
|
|
}
|
|
|
|
$done = 0;
|
|
|
|
} else {
|
|
|
|
s/^\s+//g;
|
|
|
|
$line .= $_;
|
|
|
|
$done = 1;
|
|
|
|
}
|
|
|
|
if ($done) {
|
|
|
|
my @vals = split(/\s+/,$line);
|
|
|
|
my $key = shift @vals;
|
|
|
|
my $entry;
|
|
|
|
|
|
|
|
print "dn: cn=amdmap $mapname\[$key\], $base\n";
|
|
|
|
printf "$fmt","cn","amdmap $mapname\[$key\]";
|
|
|
|
printf "$fmt","objectClass", "amdmap";
|
|
|
|
printf "$fmt","amdmapName", $mapname;
|
|
|
|
printf "$fmt","amdmapKey", $key;
|
|
|
|
printf "$fmt","amdmapValue", join(' ',@vals);
|
|
|
|
print "\n";
|
|
|
|
$line = ""; $done = 0;
|
|
|
|
}
|
|
|
|
}
|