#! --SH--
#
# sympa			Mailing Lists Management System
#
# Written by Michel Bouissou  20/07/2000
#
# Modified by Olivier Salaun 27/07/2000
#    - translations
#    - lang parameter deleted (defined in sympa.conf)
#    - introduced --VARS-- parsed by Makefile
#    - no more sympauser since sympa sets its UID
# Modified by Michel Bouissou  27/07/2000
#
# chkconfig: 345 95 05
# description: sympa is a powerfull mailing lists management system.

if [ ${OSTYPE} != "FreeBSD" ]; then
    # Source function library.
    . /etc/rc.d/init.d/functions

    # Get config.
    . /etc/sysconfig/network
fi

# Sympa parameters
# Sympa binaries directory
sympadir="--SBINDIR--"

# Sympa config files directory
sympaconf="--CONFIG--"
wwsympaconf="--WWSCONFIG--"

# End of parameters

# Current state of the module
sympa_status() {
    # Test syntax.
    if [ $# = 0 ] ; then
        echo "Usage: sympa_status {program}"
        return 1
    fi
 
    # First try "--PIDDIR--/*.pid" files
    if [ -f --PIDDIR--/$1.pid ] ; then
            pid=`head -1 --PIDDIR--/$1.pid`
            if [ "$pid" != "" ] ; then
                    echo "$1 died, pid file remains."
                    return 1
            fi
    fi

    # Next try "pidof"
#    pid=`--PIDPRE-- $1.pl --PIDPOST--`
#    if [ "$pid" != "" ] ; then
#            echo "$1 (pid $pid) is active..."
#            return 0
#    fi
 
    echo "$1 is stopped."
    return 3
}

# Start a module
sympa_module_start() {
    if [ $# = 0 ] ; then
        echo "Usage: sympa_module_start {program}"
        return 1
    fi

#	if [ $1 = "sympa" -a $lang != "" ]; then
#		startparam="-l $lang"
#	else
#		startparam=""
#	fi
 
	$sympadir/$1.pl $startparam && success || failure
	echo
}

# Test state of module before startup
sympa_start() {
    if [ $# = 0 ] ; then
        echo "Usage: sympa_start {program}"
        return 1
    fi
 
	echo -n "Starting module $1.pl: "
	sympa_status $1 > /dev/null
	case "$?" in
		3)
			sympa_module_start $1
			;;
		1)
			echo "Starting $1, overwritting old pid file."
			sympa_module_start $1
			;;
		0)
			echo "$1 seems active. No action will be taken."
			echo "Try \"sympa status\" or \"sympa restart"\".
			;;
	esac
}

# Stop a module
sympa_stop() {
    if [ $# = 0 ] ; then
        echo "Usage: sympa_stop {program}"
        return 1
    fi
 
	if [ -f --PIDDIR--/$1.pid ]; then
		echo -n "Stopping module $1.pl: "
		pid=`head -1 --PIDDIR--/$1.pid`
		kill -TERM $pid && success || failure
		rm -f /var/run/$1.pl.pid
		echo
	fi
}


# Check that networking is up.
if [ ${OSTYPE} != "FreeBSD" ]; then
    if [ ${NETWORKING} = "no" ]
    then
	    exit 0
    fi
fi

# Check config files
[ -d $sympadir ] || exit 0
[ -f $sympaconf ] || exit 0
[ -f $wwsympaconf ] || exit 0

# See how we were called.
case "$1" in
  start)
	if [ ! -f --LOCKDIR--/sympa ]; then
		echo "Starting Sympa subsystem: "
		sympa_start sympa
		sympa_start archived
		sympa_start bounced
#		sympa_start task_manager
		touch --LOCKDIR--/sympa
		echo
	else

		echo "Sympa seems active. No action will be taken."
		echo "Try \"sympa status\" or \"sympa restart"\".

	fi
	;;
  stop)
	echo "Stopping Sympa subsystem: "
	sympa_stop bounced
	sympa_stop archived
	sympa_stop sympa
	sympa_stop task_manager
	if [ -f --LOCKDIR--/sympa ]; then
		rm -f --LOCKDIR--/sympa
	fi
	;;
  status)
	echo "Status of Sympa subsystem: "
	echo -n "Status file for subsystem "
	if [ -f --LOCKDIR--/sympa ]; then
		echo "found."
	else
		echo "NOT found."
	fi
	sympa_status sympa
	sympa_status archived
	sympa_status bounced
	sympa_status task_manager
	;;
  restart)
	echo "Restarting Sympa subsystem: "
	$0 stop
	$0 start
	echo
	;;
  *)
	echo "Usage: $0 {start|stop|status|restart}"
	exit 1
	;;
esac

exit 0




