added conversion script for schema -> ldif
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Mon, 21 Oct 2013 22:09:12 +0200
changeset 2 602463764ee2
parent 1 b4288a997501
child 3 51ab3dd0fd5c
added conversion script for schema -> ldif
convert
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/convert	Mon Oct 21 22:09:12 2013 +0200
@@ -0,0 +1,44 @@
+#! /usr/bin/perl
+# according
+# http://www.zytrax.com/books/ldap/ch6/slapd-config.html#use-schemas
+use 5.010;
+use strict;
+use warnings;
+use File::Temp;
+
+my $CORE = '/etc/ldap/schema/core.schema';
+
+die "$0: $CORE: $!\n" if not -r $CORE;
+
+my $cf = File::Temp->new();
+my $cd = File::Temp->newdir();
+
+$cf->print(<<_EOF);
+include $CORE
+include ./exim.schema
+_EOF
+
+close $cf;
+
+system slaptest => ( -f => $cf ),
+		   ( -F => $cd );
+
+my $ldif;
+open($ldif, '<', $_ = "$cd/cn=config/cn=schema/cn={1}exim.ldif")
+    or die "Can't open $_: $!\n";
+
+$_ = do { local $/ = undef; <$ldif> };
+
+s/\n\s+//gms;
+s/^(?!(olc|dn|objectClass|cn)).*?\n//msg;
+s/(?<=^dn: cn=){\d+}(\w+)/$1,cn=schema,cn=config/ms;
+s/(?<=^cn: ){\d+}//msg;
+
+open($ldif, '>', 'exim.ldif') 
+    or die "Can't open > exim.ldif: $!\n";
+$ldif->print(<<__);
+# autogenerated by $0
+# do not edit, edit exim.schema instead
+__
+$ldif->print($_);
+close $ldif;