[c5c522c] | 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 |
---|
[669bb09] | 25 | |
---|
| 26 | #initalize config settings |
---|
| 27 | cd /usr/webint/htdocs/settings/ |
---|
| 28 | php ldap_config.php init |
---|
[c5c522c] | 29 | |
---|
| 30 | #upgrade aanwezig? |
---|
| 31 | if [ -e /usr/sbin/slapd.upgrade ]; then |
---|
| 32 | DB=`cat /etc/openldap/slapd.conf|grep ^directory|cut -f2` |
---|
| 33 | |
---|
[669bb09] | 34 | |
---|
[c5c522c] | 35 | ##### 1. exporteer de database |
---|
| 36 | if ! [ -e $BACKUP ] && [ -e $DB/cn.* ]; then |
---|
| 37 | echo "Dumping database" |
---|
[669bb09] | 38 | #dumpen |
---|
[c5c522c] | 39 | if ! slapcat > $BACKUP ; then |
---|
| 40 | rm $BACKUP |
---|
| 41 | echo "Dump failed!" |
---|
| 42 | exit 1 |
---|
| 43 | fi |
---|
| 44 | sync |
---|
[669bb09] | 45 | |
---|
[c5c522c] | 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 |
---|
[669bb09] | 53 | fi |
---|
| 54 | |
---|
[c5c522c] | 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." |
---|
[669bb09] | 59 | exit 1 |
---|
[c5c522c] | 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 |
---|
[669bb09] | 69 | # we gebruiken nu syncrepl in mirror mode. |
---|
[c5c522c] | 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 |
---|
[669bb09] | 98 | #genereer de schemas.conf opnieuw: |
---|
[c5c522c] | 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 |
---|
[669bb09] | 111 | cat $BACKUP | |
---|
| 112 | grep -v "^OpenLDAPaci" | |
---|
[c5c522c] | 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 |
---|