#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          openbsd-inetd-chroot
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start or stop the inetd daemon in chroot.
### END INIT INFO

CHRBIN=/usr/sbin/chroot
CHRDIR=/chroot/execd

DAEMON=/usr/sbin/inetd-chroot

[ -x $CHRDIR$DAEMON -a -e $CHRDIR/etc/inetd.conf ] || exit 0

[ -e $CHRDIR/etc/default/openbsd-inetd ] && . $CHRDIR/etc/default/openbsd-inetd

. /lib/lsb/init-functions

checkportmap () {
  if ! grep -v -s "^ *#" $CHRDIR/etc/inetd.conf | grep -q -s 'rpc/'; then
    return 0
  fi

  if [ ! -x /usr/bin/rpcinfo ]; then
    log_action_msg "WARNING: rpcinfo not available - RPC services may be unavailable!"
    log_action_msg "         (Commenting out the rpc services in inetd.conf will"
    log_action_msg "         disable this message)"
  elif ! /usr/bin/rpcinfo -u localhost portmapper >/dev/null 2>&1; then
    log_action_msg "WARNING: portmapper inactive - RPC services unavailable!"
    log_action_msg "         (Commenting out the rpc services in inetd.conf will"
    log_action_msg "         disable this message)"
  fi
}

checknoservices () {
    if ! grep -q "^[[:alnum:]/]" $CHRDIR/etc/inetd.conf; then
        log_action_msg "Not starting internet superserver: no services enabled"
        exit 0
    fi
}

case "$1" in
    start)
        checknoservices
        checkportmap
        log_daemon_msg "Starting internet superserver" "inetd-chroot"
        start-stop-daemon --start --quiet --pidfile $CHRDIR/run/inetd.pid \
            --exec $CHRBIN -- $CHRDIR $DAEMON $OPTIONS
        log_end_msg 0
        ;;
    stop)
        log_daemon_msg "Stopping internet superserver" "inetd-chroot"
        start-stop-daemon --stop --quiet --pidfile $CHRDIR/run/inetd.pid \
            --oknodo
        log_end_msg 0
        ;;
    reload|force-reload)
        log_daemon_msg "Reloading internet superserver" "inetd-chroot"
        start-stop-daemon --stop --quiet --pidfile $CHRDIR/run/inetd.pid \
            --oknodo --signal 1
        log_end_msg 0
        ;;
    restart)
        checkportmap
        log_daemon_msg "Restarting internet superserver" "inetd-chroot"
        start-stop-daemon --stop --quiet --pidfile $CHRDIR/run/inetd.pid \
            --oknodo
        checknoservices
        sleep 1
        start-stop-daemon --start --quiet --pidfile $CHRDIR/run/inetd.pid \
            --exec $CHRBIN -- $CHRDIR $DAEMON $OPTIONS
        log_end_msg 0
        ;;
    *)
        echo "Usage: /etc/init.d/openbsd-inetd-chroot {start|stop|reload|force-reload|restart}"
        exit 2
        ;;
esac

exit 0
