#!/bin/sh
# Start/stop the Kannel boxes: One bearer box and one WAP box.

# This is the default init.d script for Kannel.  Its configuration is
# appropriate for a small site running Kannel on one machine.

# Make sure that the Kannel binaries can be found in $BOXPATH or somewhere
# else along $PATH.  run_kannel_box has to be in $BOXPATH.

BOXPATH=/usr/sbin
PIDFILES=/var/run/kannel
CONFDIR=/etc/kannel
CONF=$CONFDIR/kannel.conf

PATH=$BOXPATH:$PATH

# On Debian, the most likely reason for the bearerbox not being available
# is that the package is in the "removed" or "unconfigured" state, and the
# init.d script is still around because it's a conffile.  This is normal,
# so don't generate any output.
test -x $BOXPATH/bearerbox || exit 0

test -r /etc/default/kannel-cvs && . /etc/default/kannel-cvs

case "$1" in
  start)
    echo -n "Starting WAP gateway:"
    echo -n " bearerbox"
    start-stop-daemon --start --quiet \
	--pidfile $PIDFILES/kannel_bearerbox.pid \
	--chuid kannel \
	--exec $BOXPATH/run_kannel_box \
	-- \
	--pidfile $PIDFILES/kannel_bearerbox.pid \
	--no-extra-args \
	$BOXPATH/bearerbox -v 4 -- $CONF
    sleep 1 # Wait for bearerbox
    test ! -z $START_WAPBOX && (
    echo -n " wapbox"
	start-stop-daemon --start --quiet \
    	    --pidfile $PIDFILES/kannel_wapbox.pid \
	    --chuid kannel \
	    --exec $BOXPATH/run_kannel_box \
	    -- \
	    --pidfile $PIDFILES/kannel_wapbox.pid \
	    --no-extra-args \
	    $BOXPATH/wapbox -v 4 -- $CONF
    )
    test ! -z $START_SMSBOX && (
    echo -n " smsbox"
	start-stop-daemon --start --quiet \
    	    --pidfile $PIDFILES/kannel_smsbox.pid \
	    --chuid kannel \
	    --exec $BOXPATH/run_kannel_box \
	    -- \
	    --pidfile $PIDFILES/kannel_smsbox.pid \
	    --no-extra-args \
	    $BOXPATH/smsbox -v 4 -- $CONF
    )
    echo "."
    ;;

  stop)
    echo -n "Stopping WAP gateway:"
    test ! -z $START_SMSBOX && (
	echo -n " smsbox"
	start-stop-daemon --stop --retry 5 --quiet \
    	    --pidfile $PIDFILES/kannel_smsbox.pid \
	    --exec $BOXPATH/run_kannel_box
    )
    test ! -z $START_WAPBOX && (
	echo -n " wapbox"
	start-stop-daemon --stop --retry 5 --quiet \
    	    --pidfile $PIDFILES/kannel_wapbox.pid \
	    --exec $BOXPATH/run_kannel_box
    )
    echo -n " bearerbox"
    start-stop-daemon --stop --retry 5 --quiet \
    	--pidfile $PIDFILES/kannel_bearerbox.pid \
	--exec $BOXPATH/run_kannel_box
    echo "."
    ;;

  status)
    CORE_CONF=$(grep -r 'group[[:space:]]*=[[:space:]]*core' $CONFDIR | cut -d: -f1)
    ADMIN_PORT=$(grep '^admin-port' $CORE_CONF | sed "s/.*=[[:space:]]*//")
    ADMIN_PASS=$(grep '^admin-password' $CORE_CONF | sed "s/.*=[[:space:]]*//")
    STATUS_URL="http://127.0.0.1:${ADMIN_PORT}/status.txt?password=${ADMIN_PASS}"
    lynx -source $STATUS_URL
    ;;

  reload)
    # We don't have support for this yet.
    exit 1
    ;;

  restart|force-reload)
    $0 stop
    sleep 1
    $0 start
    ;;

  *)
    echo "Usage: $0 {start|stop|status|restart|force-reload}"
    exit 1

esac

exit 0
