#!/sbin/openrc-run # Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 extra_commands="checkconfig" [ -z "$INSTANCE" ] && INSTANCE="openldap${SVCNAME#slapd}" PIDDIR=/run/openldap PIDFILE=$PIDDIR/$SVCNAME.pid depend() { need net before dbus hald avahi-daemon provide ldap } start() { checkpath -q -d ${PIDDIR} -o ldap:ldap if ! checkconfig -Q ; then eerror "There is a problem with your slapd.conf!" return 1 fi ebegin "Starting ldap-server" [ -n "$KRB5_KTNAME" ] && export KRB5_KTNAME eval start-stop-daemon --start --pidfile ${PIDFILE} --exec /usr/lib/openldap/slapd -- -u ldap -g ldap "${OPTS}" eend $? } stop() { ebegin "Stopping ldap-server" start-stop-daemon --stop --signal 2 --quiet --pidfile ${PIDFILE} eend $? } checkconfig() { # checks requested by bug #502948 # Step 1: extract the last valid config file or config dir set -- $OPTS while [ -n "$*" ]; do opt=$1 ; shift if [ "$opt" = "-f" -o "$opt" = "-F" ] ; then CONF=$1 shift fi done set -- # Fallback CONF=${CONF-/etc/openldap/slapd.conf} [ -d $CONF ] && CONF=${CONF}/* DBDIRS=`eval awk '"/^(directory|olcDbDirectory:)/{print \\$2}"' $CONF` for d in $DBDIRS; do if [ ! -d $d ]; then eerror "Directory $d in config does not exist!" return 1 fi /usr/bin/find $d ! -name DB_CONFIG ! -user ldap -o ! -group ldap |grep -sq . if [ $? -ne 0 ]; then ewarn "You have files in $d not owned by the ldap user, you must ensure they are accessible to the slapd instance!" fi [ ! -e $d/DB_CONFIG ] && ewarn "$d/DB_CONFIG does not exist, slapd performance may be sub-optimal" done # now test the config fully /usr/sbin/slaptest -u "$@" ${OPTS_CONF} }