# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1382386152 -7200 # Node ID 602463764ee2d5441a02f1bc9ef8d624dc2ac8aa # Parent b4288a9975012507383f66e069fb4ebc6704b437 added conversion script for schema -> ldif diff -r b4288a997501 -r 602463764ee2 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;