File: 90-slapd-runtime-config.diff

package info (click to toggle)
libkolab-perl 1%3A2.2.4-20100624-3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 676 kB
  • ctags: 202
  • sloc: perl: 4,362; sh: 95; makefile: 36
file content (70 lines) | stat: -rw-r--r-- 3,824 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Goal: Use slapd.d "runtime configuration" for slapd

Fixes  #596710 (kolabd: kolab_bootstrap no longer works with
slapd (version 2.4.23))

Author: Mathieu Parent <math.parent@gmail.com>

Upstream status: https://issues.kolab.org/issue3000

Index: libkolab-perl-2.2.4-20100624/lib/Kolab/Conf.pm
===================================================================
--- libkolab-perl-2.2.4-20100624.orig/lib/Kolab/Conf.pm	2010-09-13 21:18:54.000000000 +0200
+++ libkolab-perl-2.2.4-20100624/lib/Kolab/Conf.pm	2010-09-14 08:28:22.000000000 +0200
@@ -295,7 +295,7 @@
                 $haschanged{'saslauthd'} = 1;
             } elsif ($cfg =~ /apache/) {
                 $haschanged{'apache'} = 1;
-            } elsif ($cfg =~ /openldap/) {
+            } elsif ($cfg =~ /openldap/ || $cfg =~ /slapd/) {
                 $haschanged{'slapd'} = 1;
             } elsif ($cfg =~ /(imapd|cyrus)/) {
                 $haschanged{'imapd'} = 1;
@@ -854,8 +854,17 @@
 sub reload
 {
     if ($haschanged{'slapd'}) {
-        &Kolab::log('K', 'Restarting OpenLDAP...');
-        system("invoke-rc.d slapd restart &");
+        &Kolab::log('K', 'Stopping OpenLDAP...');
+        system("invoke-rc.d slapd stop");
+        &Kolab::log('K', 'Deleting old slapd config...');
+        system("rm -rf $Kolab::config{'ldapserver_confdir'}/slapd.d");
+        &Kolab::log('K', 'Converting slapd config... (most errors here can be ignored)');
+        system("mkdir $Kolab::config{'ldapserver_confdir'}/slapd.d");
+        system("slaptest -f $Kolab::config{'ldapserver_confdir'}/slapd.conf -F $Kolab::config{'ldapserver_confdir'}/slapd.d");
+        system("chown -R openldap $Kolab::config{'ldapserver_confdir'}/slapd.d");
+        system("chgrp -R openldap $Kolab::config{'ldapserver_confdir'}/slapd.d");
+        &Kolab::log('K', 'Starting OpenLDAP...');
+        system("invoke-rc.d slapd start");
     }
 
     if ($haschanged{'saslauthd'}) {
Index: libkolab-perl-2.2.4-20100624/sbin/kolab_bootstrap.in
===================================================================
--- libkolab-perl-2.2.4-20100624.orig/sbin/kolab_bootstrap.in	2010-09-14 08:13:09.000000000 +0200
+++ libkolab-perl-2.2.4-20100624/sbin/kolab_bootstrap.in	2010-09-14 08:27:09.000000000 +0200
@@ -489,6 +489,14 @@
       Kolab::Conf::bootstrapConfig();
       $Kolab::config{"bootstrap_config"} = 'false';
 
+      print "Deleting old slapd config...\n";
+      system("rm -rf $Kolab::config{'ldapserver_confdir'}/slapd.d");
+      print "Converting slapd config...\n";
+      system("mkdir $Kolab::config{'ldapserver_confdir'}/slapd.d");
+      system("slaptest -f $Kolab::config{'ldapserver_confdir'}/slapd.conf -F $Kolab::config{'ldapserver_confdir'}/slapd.d");
+      system("chown -R openldap $Kolab::config{'ldapserver_confdir'}/slapd.d");
+      system("chgrp -R openldap $Kolab::config{'ldapserver_confdir'}/slapd.d");
+
       #ldap server should access to certificate key
       system("adduser --quiet $Kolab::config{'ldapserver_rusr'} $Kolab::config{'pki_grp'}");
 
@@ -497,7 +505,7 @@
       $ldap_uri = "ldap://127.0.0.1:389/";
       # ensure that the database has correct permissions
       system("chown $Kolab::config{'ldapserver_rusr'}:$Kolab::config{'ldapserver_grp'} $Kolab::config{'ldapserver_dir'}/*");
-      (system("/usr/sbin/slapd -h ldap://127.0.0.1:389/ -f $Kolab::config{'ldapserver_confdir'}/slapd.conf -u $Kolab::config{'ldapserver_rusr'} -g $Kolab::config{'ldapserver_grp'}") == 0 ) || die( "Could not start temporary slapd: $!" );
+      (system("/usr/sbin/slapd -h ldap://127.0.0.1:389/ -F $Kolab::config{'ldapserver_confdir'}/slapd.d -u $Kolab::config{'ldapserver_rusr'} -g $Kolab::config{'ldapserver_grp'}") == 0 ) || die( "Could not start temporary slapd: $!" );
       print ("Waiting for OpenLDAP to start\n");
       sleep 10;