#!/bin/sh
#
# mailman    This shell script starts and stops GNU Mailman.
#
# Copyright (C) 2001-2003 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Copy this file to /etc/init.d/ (or /etc/rc.d/init.d/ depending on
# your system) and activate it as such:
#
# On Debian, type "update-rc.d mailman defaults"
# On RedHat, and derivatives, install with "chkconfig --add mailman"
#
# chkconfig: - 98 12
# description: Mailman is the GNU Mailing List Manager, a program that \
#              manages electronic mail discussion groups.  For more \
#              on GNU Mailman see http://www.list.org
# processname: mailmanctl
# config: /usr/lib/mailman/Mailman/mm_cfg.py
# pidfile: /var/run/mailman/master-qrunner.pid

PYTHON=/usr/bin/python
MAILMANHOME=/usr/lib/mailman
MAILMANCTL=$MAILMANHOME/bin/mailmanctl

# We used to install the mailman cron jobs when the mailman rpm was
# installed, irrespective of whether mailman was actually being
# run. Although the cron jobs didn't create any problems if someone
# wasn't running mailman some users complained about the cron log file
# filling up, resource usage, and power consumption since systems
# wouldn't really idle. It really only makes sense to run the mailman
# cron jobs if the mailman service is turned on and not just merely
# having the rpm installed. This init.d script is an obvious place to
# install or remove the cron jobs based on the service being enabled
# or not.

SRC_CRON_SCRIPT=$MAILMANHOME/cron/crontab.in
DST_CRON_SCRIPT=/etc/cron.d/mailman

function InstallCron()
{
    install -m644 -o root -g root $SRC_CRON_SCRIPT $DST_CRON_SCRIPT
}

function RemoveCron()
{
cat > $DST_CRON_SCRIPT <<EOF
# DO NOT EDIT THIS FILE!
#
# Contents of this file managed by /etc/init.d/mailman
# Master copy is /usr/lib/mailman/cron/crontab.in
# Consult that file for documentation
EOF
}

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

RETVAL=0
prog="mailman"

function start()
{
    echo -n $"Starting $prog: "
    daemon $PYTHON $MAILMANCTL -s -q start
    RETVAL=$?
    if [ $RETVAL -eq 0 ]
    then
	touch /var/lock/subsys/$prog
	InstallCron
    fi
    echo
    return $RETVAL
}

function stop()
{
    echo -n $"Shutting down $prog: "
    daemon $PYTHON $MAILMANCTL -q stop
    RETVAL=$?
    if [ $RETVAL -eq 0 ]
    then
	rm -f /var/lock/subsys/$prog
	RemoveCron
    fi
    echo
    return $RETVAL
}

function restart()
{
    stop
    start
    RETVAL=$?
    return $RETVAL
}

case "$1" in
'start')
    start
    RETVAL=$?
    ;;

'stop')
    stop
    RETVAL=$?
    ;;

'restart')
    restart
    RETVAL=$?
    ;;

'condrestart')
    $PYTHON $MAILMANCTL -q -u status
    retval=$?
    if [ $retval -eq 0 ]
    then
	restart
	RETVAL=$?
    fi
    ;;

'status')
    $PYTHON $MAILMANCTL -u status
    RETVAL=$?
    ;;

*)  
    echo $"Usage: $prog {start|stop|restart|condrestart|status}"
    RETVAL=3
    ;;

esac
exit $RETVAL
