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

gcc484ntopperl-5.22
Last change on this file since c5c522c was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

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