equal
deleted
inserted
replaced
|
1 #! /usr/bin/perl |
|
2 # according |
|
3 # http://www.zytrax.com/books/ldap/ch6/slapd-config.html#use-schemas |
|
4 use 5.010; |
|
5 use strict; |
|
6 use warnings; |
|
7 use File::Temp; |
|
8 |
|
9 my $CORE = '/etc/ldap/schema/core.schema'; |
|
10 |
|
11 die "$0: $CORE: $!\n" if not -r $CORE; |
|
12 |
|
13 my $cf = File::Temp->new(); |
|
14 my $cd = File::Temp->newdir(); |
|
15 |
|
16 $cf->print(<<_EOF); |
|
17 include $CORE |
|
18 include ./exim.schema |
|
19 _EOF |
|
20 |
|
21 close $cf; |
|
22 |
|
23 system slaptest => ( -f => $cf ), |
|
24 ( -F => $cd ); |
|
25 |
|
26 my $ldif; |
|
27 open($ldif, '<', $_ = "$cd/cn=config/cn=schema/cn={1}exim.ldif") |
|
28 or die "Can't open $_: $!\n"; |
|
29 |
|
30 $_ = do { local $/ = undef; <$ldif> }; |
|
31 |
|
32 s/\n\s+//gms; |
|
33 s/^(?!(olc|dn|objectClass|cn)).*?\n//msg; |
|
34 s/(?<=^dn: cn=){\d+}(\w+)/$1,cn=schema,cn=config/ms; |
|
35 s/(?<=^cn: ){\d+}//msg; |
|
36 |
|
37 open($ldif, '>', 'exim.ldif') |
|
38 or die "Can't open > exim.ldif: $!\n"; |
|
39 $ldif->print(<<__); |
|
40 # autogenerated by $0 |
|
41 # do not edit, edit exim.schema instead |
|
42 __ |
|
43 $ldif->print($_); |
|
44 close $ldif; |