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