#!/bin/sh
#
# enserver Start/Stop the EN-Server daemon
#
# chkconfig: 345 96 10
# description: Apsheronsk transport system

### BEGIN INIT INFO
# Provides: enserver
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Short-Description: enserver daemon
# Description: Apsheronsk transport system
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

#set -e
# This is an interactive program, we need the current locale
[ -f /etc/profile.d/lang.sh ] && . /etc/profile.d/lang.sh

if [ -f /etc/sysconfig/enserver ]; then
    . /etc/sysconfig/enserver
fi

# configuration parameters
PYTHON=${PYTHON:-/usr/bin/python2.6}
ENSERVER=${ENSERVER:-/usr/lib/python2.6/site-packages/enserver/enserver.py}
USER=${USER:-apsh}
PIDFILE=${PIDFILE:-/var/run/apsh/enserver.pid}
STOP_TIMEOUT=${STOP_TIMEOUT:-10}
HTTP_PORT=${HTTP_PORT:-7000}
TCP_PORT=${TCP_PORT:-7001}
LOGLEVEL=${LOGLEVEL:+--debug}
LOGFILE=${LOGFILE:-/var/log/apsh/enserver.log}
STORAGE=${STORAGE:-/share/store/enserver}
PARENT_HOST=${HOST:+--host=$HOST}
ADDRESS=${ADDRESS:-enserv}
RETVAL=0

OPTIONS="$LOGLEVEL --logfile=$LOGFILE --port=$TCP_PORT --pidfile=$PIDFILE --storage=$STORAGE --address=$ADDRESS $PARENT_HOST $OPTIONS"
DAEMON="--daemon"

start() {
    echo -n $"Starting enserver: "

    LANG="C" ss -pltn | grep ":${HTTP_PORT}[ \t]\+" > /dev/null && P1=0 || P1=1
    LANG="C" ss -pltn | grep ":${TCP_PORT}[ \t]\+"  > /dev/null && P2=0 || P2=1

    if [ $P1 -eq 0 ] || [ $P2 -eq 0 ]; then
        echo -n $"port already in use"
        RETVAL=1
    else
        daemon --user=${USER} --pidfile=${PIDFILE} $PYTHON $ENSERVER $DAEMON $OPTIONS
        RETVAL=$?
    fi
    echo
}

stop() {
     echo -n $"Stopping enserver: "
     killproc -p ${PIDFILE} -d ${STOP_TIMEOUT} $PYTHON
     RETVAL=$?
     echo
}

case "$1" in
start)
    start
    ;;
constart)
    DAEMON=""
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    start
    ;;
status)
    status -p ${PIDFILE} $PYTHON
    RETVAL=$?
    ;;
*)
    echo $"Usage: $0 {start|stop|status|restart}"
    RETVAL=2
esac

exit $RETVAL
