#!/bin/bash svcstop /service/slapd || exit 1 svcstop /service/slurpd || exit 1 BACKUP="/home/system/openldap/upgrade.dump" #initiele installatie if ! [ -e /etc/openldap/slapd.conf ]; then echo "Initial installation" mkdir -p /home/system/openldap/{openldap-slave,openldap-master} ln -s /etc/openldap/slapd.conf.master /etc/openldap/slapd.conf #kopieer de minimum ldif naar de backup file, deze zal nu automatisch als database gebruikt worden verderop: cp /etc/openldap/minimum.ldif $BACKUP || exit 1 fi #set random password if grep %ldap_passwd% /etc/openldap/slapd.conf; then echo "Setting random ldap password" PASSWD=`cat /proc/sys/kernel/random/uuid` || exit 1 echo "$PASSWD" > /etc/webint/LDAP_MASTER_PASSWD sed -i "s/%ldap_passwd%/$PASSWD/" /etc/openldap/slapd.conf || exit 1 fi #initalize config settings cd /usr/webint/htdocs/settings/ php ldap_config.php init #upgrade aanwezig? if [ -e /usr/sbin/slapd.upgrade ]; then DB=`cat /etc/openldap/slapd.conf|grep ^directory|cut -f2` ##### 1. exporteer de database if ! [ -e $BACKUP ] && [ -e $DB/cn.* ]; then echo "Dumping database" #dumpen if ! slapcat > $BACKUP ; then rm $BACKUP echo "Dump failed!" exit 1 fi sync #verwijder de oude database van de disk if ! [ -d $DB ]; then echo "Ldap database directory not found?" exit 1 fi rm $DB/* || exit 1 sync fi #is er wat mis? #Dit zal theoretisch niet voor kunnen komen: if [ -e $BACKUP ] && [ -e $DB/cn.* ]; then 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." exit 1 fi echo "Cleaning up obsolete stuff.." ##### 2. upgrade naar de nieuwe slapd binary en schemas en config # zorg dat zooi van oudere versies weg is. (met name slurpd gebruiekn we niet meer in 2.4) removepkg /var/log/packages/openldap-2.2* 2>/dev/null removepkg /var/log/packages/openldap-2.3* 2>/dev/null rm -r /service/slurpd 2>/dev/null rm -r /etc/openldap/schema -r 2>/dev/null # we gebruiken nu syncrepl in mirror mode. # de .slave file is vervangen door slapd.conf.mirror1 en mirror2 rm /etc/openldap/slapd.conf.slave 2>/dev/null #de nieuwe updated dingen er neer zetten mv /usr/sbin/slapd.upgrade /usr/sbin/slapd || exit 1 mv /etc/openldap/schemas.d/upgrade/* /etc/openldap/schemas.d #mag failen rmdir /etc/openldap/schema/upgrade # we gebruiken nu het nieuwe bdb ipv ldbm als backend database sed -i 's/ldbm/bdb/' /etc/openldap/slapd.conf.master || exit 1 #gooi wat oude obsolete zooi weg uit master-only config: sed -i 's/^#slave.*//' /etc/openldap/slapd.conf.master || exit 1 sed -i 's/^replogfile.*//' /etc/openldap/slapd.conf.master || exit 1 sed -i 's/^replica.*//' /etc/openldap/slapd.conf.master || exit 1 sed -i 's/.*binddn=.cn=SlaveManager,dc=syn-3.*//' /etc/openldap/slapd.conf.master || exit 1 sed -i 's/.*bindmethod=simple.*//' /etc/openldap/slapd.conf.master || exit 1 sed -i 's/^.*credentials=.*//' /etc/openldap/slapd.conf.master || exit 1 #voeg toe om warning te voorkomen: if ! grep monitoring /etc/openldap/slapd.conf.master; then echo monitoring off >> /etc/openldap/slapd.conf.master fi #schemas worden nu geinclude via een automatisch gecreerde file. #commentaar includes die naar oude schemas verwijzen uit, en vervang door nieuwe: sed 's@include.*/schema/.*core.*@include /etc/openldap/schemas.conf@' -i /etc/openldap/slapd.conf.* || exit 1 sed 's@include.*/schema/@#&@' -i /etc/openldap/slapd.conf.* || exit 1 #genereer de schemas.conf opnieuw: #(gebeurd ook automatsich bij ldap restart) syn3-ldapconf || exit 1 ##### 3. importeer de database dump in onze nieuwe versie if [ -e $BACKUP ] && ! [ -e $DB/cn.* ]; then echo "Reimporting/upgrading database" #geef alvast een config file voor bdb #run-script doet dit ook, maar voor sommige settings is het nodig om dit al tijdens de slapadd te doen. cp /var/openldap-data/DB_CONFIG $DB/ || exit 1 #importeer de oude dump in de nieuwe versie. haal de backup hierna weer weg. #filter ACI's er uit, deze zijn veranderd en werken niet meer, maar zijn ook niet nodig. #filter een duplicate entryUUID eruit cat $BACKUP | grep -v "^OpenLDAPaci" | grep -v "^entryUUID: 482c8c22-b202-1028-9c4d-d9ea740d6018" | slapadd -q || exit 1 sync rm $BACKUP sync fi echo "Upgrade/install complete" fi #zorg dat ldapdatabase alleen toegangkelijk is voor ldap daemon useradd -s /bin/false -u 105 ldap &> /dev/null chmod -R 700 /home/system/openldap || exit 1 #open ldapconfig moet toegangkelijk zijn voor openxchange chmod -R 755 /etc/openldap || exit 1 #pidfile en argsfile werken niet meer (permissies) en willen we ook niet meer (hoeft niet met daemontools) sed -i 's/^pidfile.*//g' /etc/openldap/slapd.conf.* sed -i 's/^argsfile.*//g' /etc/openldap/slapd.conf.* #Deze regels geven een warning in nieuwe versie en zijn niet meer nodig: if [ -e /etc/openldap/slapd.conf.slave ]; then grep -v '.*by dn="cn=SlaveManager,dc=syn-3. write"*' /etc/openldap/slapd.conf.slave > /etc/openldap/slapd.conf.slave.tmp || exit 1 mv /etc/openldap/slapd.conf.slave.tmp /etc/openldap/slapd.conf.slave || exit 1 fi if [ -e /etc/openldap/slapd.conf.master ]; then grep -v '.*by dn="cn=Manager,dc=syn-3. write"*' /etc/openldap/slapd.conf.master > /etc/openldap/slapd.conf.master.tmp || exit 1 mv /etc/openldap/slapd.conf.master.tmp /etc/openldap/slapd.conf.master || exit 1 fi #apparte SlaveManager is niet meer gewenst, meeste services gaan uit van zelfde authDN + password op zowel master als slave sed 's/SlaveManager/Manager/g' -i slapd.conf.* #de chown word uitgevoerd vanuit slapd/slurpd, ook ivm backups terugzetten svcreset /service/slapd