source: npl/commonservers/openldap_conf/root/etc/postinst.d/post.openldap @ 669bb09

perl-5.22
Last change on this file since 669bb09 was 669bb09, checked in by Edwin Eefting <edwin@datux.nl>, 7 years ago

make sure ldap is properly initalized when post.openldap is run. prevents failing of radius openldap and others on initial installation

  • Property mode set to 100755
File size: 5.6 KB
Line 
1#!/bin/bash
2
3svcstop /service/slapd || exit 1
4svcstop /service/slurpd || exit 1
5
6BACKUP="/home/system/openldap/upgrade.dump"
7
8
9#initiele installatie
10if ! [ -e /etc/openldap/slapd.conf ]; then
11        echo "Initial installation"
12        mkdir -p /home/system/openldap/{openldap-slave,openldap-master}
13        ln -s /etc/openldap/slapd.conf.master /etc/openldap/slapd.conf
14        #kopieer de minimum ldif naar de backup file, deze zal nu automatisch als database gebruikt worden verderop:
15        cp /etc/openldap/minimum.ldif $BACKUP || exit 1
16fi
17
18#set random password
19if grep %ldap_passwd% /etc/openldap/slapd.conf; then
20        echo "Setting random ldap password"
21        PASSWD=`cat /proc/sys/kernel/random/uuid` || exit 1
22        echo "$PASSWD" > /etc/webint/LDAP_MASTER_PASSWD
23        sed -i "s/%ldap_passwd%/$PASSWD/" /etc/openldap/slapd.conf || exit 1
24fi
25
26#initalize config settings
27cd /usr/webint/htdocs/settings/
28php ldap_config.php init
29
30#upgrade aanwezig?
31if [ -e /usr/sbin/slapd.upgrade ]; then
32        DB=`cat /etc/openldap/slapd.conf|grep ^directory|cut -f2`
33
34
35        ##### 1. exporteer de database
36        if ! [ -e $BACKUP ] && [ -e $DB/cn.* ]; then
37                echo "Dumping database"
38                #dumpen
39                if ! slapcat > $BACKUP ; then
40                        rm $BACKUP
41                        echo "Dump failed!"
42                        exit 1
43                fi
44                sync
45
46                #verwijder de oude database van de disk
47                if ! [ -d $DB ]; then
48                        echo "Ldap database directory not found?"
49                        exit 1
50                fi
51                rm $DB/* || exit 1
52                sync
53        fi
54
55        #is er wat mis?
56        #Dit zal theoretisch niet voor kunnen komen:
57        if [ -e $BACKUP ] && [ -e $DB/cn.* ]; then
58                echo "Er ging wat mis met het upgraden van de database. U heeft nu zowel een dump file als een database, neem contact op met Syn-3 of los dit handmatig op."
59                exit 1
60        fi
61
62        echo "Cleaning up obsolete stuff.."
63        ##### 2. upgrade naar de nieuwe slapd binary en schemas en config
64        # zorg dat zooi van oudere versies weg is. (met name slurpd gebruiekn we niet meer in 2.4)
65        removepkg /var/log/packages/openldap-2.2* 2>/dev/null
66        removepkg /var/log/packages/openldap-2.3* 2>/dev/null
67        rm -r /service/slurpd 2>/dev/null
68        rm -r /etc/openldap/schema -r 2>/dev/null
69        # we gebruiken nu syncrepl in mirror mode.
70        # de .slave file is vervangen door slapd.conf.mirror1 en mirror2
71        rm /etc/openldap/slapd.conf.slave 2>/dev/null
72
73        #de nieuwe updated dingen er neer zetten
74        mv /usr/sbin/slapd.upgrade /usr/sbin/slapd || exit 1
75        mv /etc/openldap/schemas.d/upgrade/* /etc/openldap/schemas.d #mag failen
76        rmdir /etc/openldap/schema/upgrade
77
78        # we gebruiken nu het nieuwe bdb ipv ldbm als backend database
79        sed -i 's/ldbm/bdb/' /etc/openldap/slapd.conf.master || exit 1
80
81        #gooi wat oude obsolete zooi weg uit master-only config:
82        sed -i 's/^#slave.*//' /etc/openldap/slapd.conf.master || exit 1
83        sed -i 's/^replogfile.*//' /etc/openldap/slapd.conf.master || exit 1
84        sed -i 's/^replica.*//' /etc/openldap/slapd.conf.master || exit 1
85        sed -i 's/.*binddn=.cn=SlaveManager,dc=syn-3.*//' /etc/openldap/slapd.conf.master || exit 1
86        sed -i 's/.*bindmethod=simple.*//' /etc/openldap/slapd.conf.master || exit 1
87        sed -i 's/^.*credentials=.*//' /etc/openldap/slapd.conf.master || exit 1
88
89        #voeg toe om warning te voorkomen:
90        if ! grep monitoring /etc/openldap/slapd.conf.master; then
91                echo monitoring off >> /etc/openldap/slapd.conf.master
92        fi
93
94        #schemas worden nu geinclude via een automatisch gecreerde file.
95        #commentaar includes die naar oude schemas verwijzen uit, en vervang door nieuwe:
96        sed 's@include.*/schema/.*core.*@include /etc/openldap/schemas.conf@' -i /etc/openldap/slapd.conf.* || exit 1
97        sed 's@include.*/schema/@#&@' -i /etc/openldap/slapd.conf.* || exit 1
98        #genereer de schemas.conf opnieuw:
99        #(gebeurd ook automatsich bij ldap restart)
100        syn3-ldapconf || exit 1
101
102        ##### 3. importeer de database dump in onze nieuwe versie
103        if [ -e $BACKUP ] && ! [ -e $DB/cn.* ]; then
104                echo "Reimporting/upgrading database"
105                #geef alvast een config file voor bdb
106                #run-script doet dit ook, maar voor sommige settings is het nodig om dit al tijdens de slapadd te doen.
107                cp /var/openldap-data/DB_CONFIG $DB/ || exit 1
108                #importeer de oude dump in de nieuwe versie. haal de backup hierna weer weg.
109                #filter ACI's er uit, deze zijn veranderd en werken niet meer, maar zijn ook niet nodig.
110                #filter een duplicate entryUUID eruit
111                cat $BACKUP |
112                        grep -v "^OpenLDAPaci" |
113                        grep -v "^entryUUID: 482c8c22-b202-1028-9c4d-d9ea740d6018" |
114                        slapadd -q || exit 1
115                sync
116                rm $BACKUP
117                sync
118        fi
119        echo "Upgrade/install complete"
120fi
121
122#zorg dat ldapdatabase alleen toegangkelijk is voor ldap daemon
123useradd -s /bin/false -u 105 ldap &> /dev/null
124chmod -R 700 /home/system/openldap || exit 1
125
126#open ldapconfig moet toegangkelijk zijn voor openxchange
127chmod -R 755 /etc/openldap || exit 1
128
129#pidfile en argsfile werken niet meer (permissies) en willen we ook niet meer (hoeft niet met daemontools)
130sed -i 's/^pidfile.*//g' /etc/openldap/slapd.conf.*
131sed -i 's/^argsfile.*//g' /etc/openldap/slapd.conf.*
132
133#Deze regels geven een warning in nieuwe versie en zijn niet meer nodig:
134if [ -e /etc/openldap/slapd.conf.slave ]; then
135        grep -v '.*by dn="cn=SlaveManager,dc=syn-3. write"*' /etc/openldap/slapd.conf.slave > /etc/openldap/slapd.conf.slave.tmp || exit 1
136        mv /etc/openldap/slapd.conf.slave.tmp /etc/openldap/slapd.conf.slave || exit 1
137fi
138if [ -e /etc/openldap/slapd.conf.master ]; then
139        grep -v '.*by dn="cn=Manager,dc=syn-3. write"*' /etc/openldap/slapd.conf.master > /etc/openldap/slapd.conf.master.tmp || exit 1
140        mv /etc/openldap/slapd.conf.master.tmp /etc/openldap/slapd.conf.master || exit 1
141fi
142
143#apparte SlaveManager is niet meer gewenst, meeste services gaan uit van zelfde authDN + password op zowel master als slave
144sed 's/SlaveManager/Manager/g' -i slapd.conf.*
145
146#de chown word uitgevoerd vanuit slapd/slurpd, ook ivm backups terugzetten
147svcreset /service/slapd
Note: See TracBrowser for help on using the repository browser.