#! /bin/sh # /etc/init.d/slapd22 startup script # based on the slapd startup script from Debian Sarge for OpenLDAP 2.1.30 # Kill me on all errors set -e # Stop processing if slapd is not there [ -x /usr/local/libexec/slapd ] || exit 0 # Source the init script configuration if [ -f "/etc/default/slapd" ]; then . /etc/default/slapd fi # Load the default location of the slapd config file if [ -z "$SLAPD_CONF" ]; then SLAPD_CONF="/usr/local/etc/openldap/slapd.conf" else SLAPD_OPTIONS="-f $SLAPD_CONF $SLAPD_OPTIONS" SLURPD_OPTIONS="-f $SLAPD_CONF $SLURPD_OPTIONS" fi # Stop processing if the config file is not there if [ ! -r "$SLAPD_CONF" ]; then cat <&2 No configuration file was found for slapd at $SLAPD_CONF. If you have moved the slapd configuration file please modify /etc/default/slapd to reflect this. If you chose to not configure slapd during installation then you need to do so prior to attempting to start slapd. An example slapd.conf is in /usr/share/slapd EOF exit 0 # Should this be 1? fi # Figure out some default settings # Check wether slurpd should get started if [ "$SLURPD_START" != "yes" ] && [ "$SLURPD_START" != "no" ]; then if grep -q '^replica' "$SLAPD_CONF" > /dev/null 2>&1 ; then SLURPD_START=yes else SLURPD_START=no fi fi # Find out the name of slapd's pid file if [ -z "$SLAPD_PIDFILE" ]; then SLAPD_PIDFILE=`sed -ne 's/^pidfile[[:space:]]\+\(.\+\)/\1/p' \ "$SLAPD_CONF"` fi if [ -z "$SLAPD_PIDFILE" ]; then cat <&2 The pidfile for slapd is neither specified in "$SLAPD_CONF" nor in /etc/default/slapd. Consequently, slapd will not be started. EOF exit 1 fi # Pass the user and group to run under to slapd if [ "$SLAPD_USER" ]; then SLAPD_OPTIONS="-u $SLAPD_USER $SLAPD_OPTIONS" fi if [ "$SLAPD_GROUP" ]; then SLAPD_OPTIONS="-g $SLAPD_GROUP $SLAPD_OPTIONS" fi # Tell the user that something went wrong and give some hints for # resolving the problem. report_failure() { if [ -n "$reason" ]; then echo " - failed: " echo $reason else echo " - failed." cat <&1`" else reason="`start-stop-daemon --start --quiet \ --pidfile "$SLAPD_PIDFILE" \ --exec /usr/local/libexec/slapd -- -h "$SLAPD_SERVICES" $SLAPD_OPTIONS 2>&1`" fi } # Start the slurpd daemon and capture the error message if any to # $reason. start_slurpd() { if [ "$SLURPD_START" != yes ]; then return 0 fi echo -n " slurpd" reason="`start-stop-daemon --start --quiet \ --exec /usr/sbin/slurpd -- $SLURPD_OPTIONS 2>&1`" } # Stop the slapd daemon and capture the error message (if any) to # $reason. stop_slapd() { echo -n " slapd" reason="`start-stop-daemon --stop --quiet --oknodo --retry 10 \ --pidfile "$SLAPD_PIDFILE" \ --exec /usr/local/libexec/slapd 2>&1`" } # Stop the slurpd daemon and capture the error message (if any) to # $reason. stop_slurpd() { if [ "$SLURPD_START" != yes ]; then return 0 fi echo -n " slurpd" reason="`start-stop-daemon --stop --quiet --oknodo --retry 10 \ --exec /usr/sbin/slurpd 2>&1`" } # Start the OpenLDAP daemons start() { echo -n "Starting OpenLDAP:" trap 'report_failure' 0 start_slapd start_slurpd trap "-" 0 echo . } # Stop the OpenLDAP daemons stop() { echo -n "Stopping OpenLDAP:" trap 'report_failure' 0 stop_slurpd stop_slapd trap "-" 0 echo . } case "$1" in start) start ;; stop) stop ;; restart|force-reload) stop start ;; *) echo "Usage: $0 {start|stop|restart|force-reload}" exit 1 ;; esac