#!/bin/bash
#
# ejabberd server
#
# chkconfig: 345 80 05
# description: Ejabber server daemon

get_pid() {
  # get port from 'epmd -names', then get pid from 'netstat -tlnp'
  PORT=$(epmd -names 2> /dev/null | grep ejabberd | cut -f5 -d\ )
  [ -z "$PORT" ] && { echo '' ; return 0; }
  PID=$(netstat -tlnp | grep $PORT | grep -oE '[[:digit:]]+/')
  [ -z "$PID" ] && { echo '' ; return 0; }
  echo ${PID%/}
}

start() {
  [ -f /var/run/ejabber.pid ] && rm -f /var/run/ejabber.pid
  echo -n "Starting ejabberd: "
  PID=$(get_pid)
  if [ -z "$PID" ]; then
    su ejabberd -s /bin/bash - -c 'erl -pa /usr/lib/ejabberd/ebin -sname ejabberd -s ejabberd -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" log_path \"/var/log/ejabberd/ejabberd.log\" -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} -mnesia dir \"/var/spool/ejabberd\" -detached -kernel inetrc \"/etc/ejabberd/inetrc\"'
    if [ $? -gt 0 ]; then
      echo -e "$RESULT_FAIL"
      exit 1
    else
      echo $(get_pid) > /var/run/ejabberd.pid
      echo -e "$RESULT_OK"
    fi
  else
    echo -e "$RESULT_FAIL"
    exit 1
  fi
}

stop() {
  echo -n "Stopping ejabberd: "
  PID=$(get_pid)
  [ ! -z "$PID" ] && su ejabberd -s /bin/bash - -c "kill $PID" &> /dev/null
  if [ $? -gt 0 ]; then
    echo -e "$RESULT_FAIL"
    exit 1
  else
    rm -f /var/run/ejabberd.pid &> /dev/null
    echo -e "$RESULT_OK"
  fi
}

restart() {
  $0 stop
  sleep 3
  $0 start
}

case "$1" in
  start|stop|restart) ;;
  *) echo "Usage: $0 {start|stop|restart}" ; exit 1;;
esac

. /lib/lsb/init-functions
