#!/bin/sh
#
# mailman    This shell script starts and stops GNU Mailman.
#
# Copyright (C) 2001-2018 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# 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/share/mailman/Mailman/mm_cfg.py
# pidfile: /var/run/mailman/master-qrunner.pid
#
### BEGIN INIT INFO
# Provides: mailman
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: GNU Mailman
# 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
### END INIT INFO

PYTHON=/usr/bin/python2.7
MAILMANHOME=/usr/share/mailman
MAILMANCTL=$MAILMANHOME/bin/mailmanctl
MAILMANPID='/var/run/mailman/master-qrunner.pid'
LOCKFILE="/var/lock/subsys/mailman"

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

RETVAL=0

start()
{
    if [ -e "$LOCKFILE" ]; then
	msg_already_running mailman
	passed "mailman startup"
	RETVAL=$?
	echo
	return $RETVAL
    fi

    action "Starting mailman:" $MAILMANCTL -s -q start
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch "$LOCKFILE"
    return $RETVAL
}

stop()
{
    if [ ! -e "$LOCKFILE" ]; then
	msg_not_running mailman
	passed "mailman shutdown"
	RETVAL=$?
	echo
	return $RETVAL
    fi

    action "Shutting down mailman:" $MAILMANCTL -q stop
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f "$LOCKFILE" "$MAILMANPID"
    return $RETVAL
}

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

reload()
{
    action "Reloading mailman:" $MAILMANCTL -s -q reopen
    RETVAL=$?
    return $RETVAL
}

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

'stop')
    stop
    RETVAL=$?
    ;;

'restart')
    restart
    RETVAL=$?
    ;;

'condrestart')
    if $MAILMANCTL -q -u status; then
	restart
	RETVAL=$?
    fi
    ;;

'condstop')
    if $MAILMANCTL -q -u status; then
	stop
	RETVAL=$?
    fi
    ;;

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

'graceful')
    action "Restarting mailman:" $MAILMANCTL -s -q restart
    RETVAL=$?
    ;;

'reload')
    reload
    RETVAL=$?
    ;;

'condreload')
    if $MAILMANCTL -q -u status; then
	reload
	RETVAL=$?
    fi
    ;;

*)
    echo "Usage: ${0##*/} {start|stop|status|graceful|restart|reload|condstop|condrestart|condreload}"
    RETVAL=1
    ;;

'reopen')
    $PYTHON $MAILMANCTL -q reopen
    ;;

esac
exit $RETVAL
