1 | #!/bin/bash |
---|
2 | |
---|
3 | svcstop /service/slapd || exit 1 |
---|
4 | svcstop /service/slurpd || exit 1 |
---|
5 | |
---|
6 | BACKUP="/home/system/openldap/upgrade.dump" |
---|
7 | |
---|
8 | |
---|
9 | #initiele installatie |
---|
10 | if ! [ -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 |
---|
16 | fi |
---|
17 | |
---|
18 | #set random password |
---|
19 | if 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 |
---|
24 | fi |
---|
25 | |
---|
26 | #initalize config settings |
---|
27 | cd /usr/webint/htdocs/settings/ |
---|
28 | php ldap_config.php init |
---|
29 | |
---|
30 | #upgrade aanwezig? |
---|
31 | if [ -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" |
---|
120 | fi |
---|
121 | |
---|
122 | #zorg dat ldapdatabase alleen toegangkelijk is voor ldap daemon |
---|
123 | useradd -s /bin/false -u 105 ldap &> /dev/null |
---|
124 | chmod -R 700 /home/system/openldap || exit 1 |
---|
125 | |
---|
126 | #open ldapconfig moet toegangkelijk zijn voor openxchange |
---|
127 | chmod -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) |
---|
130 | sed -i 's/^pidfile.*//g' /etc/openldap/slapd.conf.* |
---|
131 | sed -i 's/^argsfile.*//g' /etc/openldap/slapd.conf.* |
---|
132 | |
---|
133 | #Deze regels geven een warning in nieuwe versie en zijn niet meer nodig: |
---|
134 | if [ -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 |
---|
137 | fi |
---|
138 | if [ -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 |
---|
141 | fi |
---|
142 | |
---|
143 | #apparte SlaveManager is niet meer gewenst, meeste services gaan uit van zelfde authDN + password op zowel master als slave |
---|
144 | sed 's/SlaveManager/Manager/g' -i slapd.conf.* |
---|
145 | |
---|
146 | #de chown word uitgevoerd vanuit slapd/slurpd, ook ivm backups terugzetten |
---|
147 | svcreset /service/slapd |
---|