#!/bin/sh -e function error() { echo "ERROR: $*" 1>&2 exit } # variables DATE=$(date '+%Y%m%d%H%m') if test -z "${DOMAIN}"; then error "Specifying a domain is mandatory, use -e DOMAIN=example.org" fi if test -z "${ORGANIZATION}"; then error "Specifying an organization is mandatory, use -e ORGANIZATION=\"Example Organization\"" fi if test -z "${PASSWORD}"; then if test -e /etc/ldap/password; then export PASSWORD="$(cat /etc/ldap/password)" else export PASSWORD=$(pwgen 20 1) echo "password: $PASSWORD" echo "$PASSWORD" > /etc/ldap/password chmod go= /etc/ldap/password fi fi export BASEDN="dc=${DOMAIN//./,dc=}" export PASSWD="$(slappasswd -h {SSHA} -s ${PASSWORD})" # configure cat > /tmp/update-config.sed < /etc/ldap/slapd.conf if test "$MEMBEROF" -eq 1; then cat >> /etc/ldap/slapd.conf <> /etc/ldap/slapd.conf done if test -e /ssl/live/${DOMAIN}/chain.pem \ -a -e /ssl/live/${DOMAIN}/privkey.pem \ -a -e /ssl/live/${DOMAIN}/cert.pem; then cat >> /etc/ldap/slapd.conf < /var/backups/${DATE}-startup-data.ldif fi # restore if required if test -e /var/restore/*data.ldif; then rm -r /var/lib/ldap/* || true slapadd -f /etc/ldap/slapd.conf -l /var/restore/*data.ldif 2> /dev/null mv /var/restore/*data.ldif /var/backups/${DATE}-restored-data.ldif fi # run chown -R ${USER}.${GROUP} /var/lib/ldap /etc/ldap chmod 700 /var/lib/ldap /usr/sbin/slapd -u $USER -g $GROUP -d ${DEBUG} -h "ldap:///${SSL_HOSTS}" -f /etc/ldap/slapd.conf function multimaster() { if test -z "$MULTI_MASTER_REPLICATION"; then return fi if test -z "$SERVER_NAME" || ! [[ " ${MULTI_MASTER_REPLICATION} " =~ " ${SERVER_NAME} " ]]; then error "SERVER_NAME must be one of ${MULTI_MASTER_REPLICATION} in MULTI_MASTER_REPLICATION" fi log " --> multimaster ... " # load module log "module " ldapadd -c -Y external -H ldapi:/// > /dev/null 2> /dev/null < memberof ... " if ! ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config 2> /dev/null > /dev/null; then log "module " ldapadd -c -Y external -H ldapi:/// > /dev/null 2> /dev/null < /dev/null 2> /dev/null <