138494Sobrien#!/bin/sh
238494Sobrien# control starting, stopping, or restarting hlfsd.
338494Sobrien# usage: ctl-hlfsd [start | stop | restart]
438494Sobrien#
5174294Sobrien# Package:	am-utils-6.x
638494Sobrien# Author:	Erez Zadok <ezk@cs.columbia.edu>
742629Sobrien#
851292Sobrien# chkconfig: - 72 28
942629Sobrien# description: hlfsd is a daemon similar to amd, used to redirect user
1042629Sobrien#              mail to home directory of the user
1151292Sobrien# processname: hlfsd
1251292Sobrien#
1338494Sobrien
1438494Sobrien# set path
1538494Sobrienprefix=@prefix@
1638494Sobrienexec_prefix=@exec_prefix@
1738494SobrienPATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH}
1838494Sobrienexport PATH
1938494Sobrien
2038494Sobrien# kill the named process(es)
2138494Sobrienkillproc()
2238494Sobrien{
2338494Sobrien# try bsd style ps
2438494Sobrienpscmd="ps axc"
2538494Sobrienpid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^  *//' -e 's/ .*//'`
2638494Sobrienif test "$pid" != ""
2738494Sobrienthen
2838494Sobrien	kill $pid
2938494Sobrien	return 0
3038494Sobrienfi
3138494Sobrien
3238494Sobrien# try bsd44 style ps
3338494Sobrienpscmd="ps -x"
3438494Sobrienpid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^  *//' -e 's/ .*//'`
3538494Sobrienif test "$pid" != ""
3638494Sobrienthen
3738494Sobrien	kill $pid
3838494Sobrien	return 0
3938494Sobrienfi
4038494Sobrien
4138494Sobrien# try svr4 style ps
4238494Sobrienpscmd="ps -e"
4338494Sobrienpid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^  *//' -e 's/ .*//'`
4438494Sobrienif test "$pid" != ""
4538494Sobrienthen
4638494Sobrien	kill $pid
4738494Sobrien	return 0
4838494Sobrienfi
4938494Sobrien
5038494Sobrien# failed
5138494Sobrienreturn 1
5238494Sobrien}
5338494Sobrien
54174294Sobrien# before running any real programs, chdir to / to avoid possible hangs on (NFS)
55174294Sobrien# mounts.
56174294Sobriencd /
57174294Sobrien
5838494Sobrien# locate logs directory
5938494Sobrienif [ -d /var/log ]; then
6038494Sobrien	logdir="/var/log"
6138494Sobrienelse
6238494Sobrien	logdir="/tmp"
6338494Sobrienfi
6438494Sobrien
6538494Sobrien# locate the mail spool directory
6638494Sobrienif [ -d /var/mail/. ]; then
6738494Sobrien	maildir="/var/mail"
6838494Sobrien	altmaildir="/var/alt_mail"
6982794Sobrienelif [ -d /var/spool/mail/. ]; then
7082794Sobrien	maildir="/var/spool/mail"
7182794Sobrien	altmaildir="/var/spool/alt_mail"
7238494Sobrienelse
7338494Sobrien	maildir="/usr/spool/mail"
7438494Sobrien	altmaildir="/usr/spool/alt_mail"
7538494Sobrienfi
7638494Sobrien
7738494Sobrien# locate any optional password file
78174294Sobrienif [ -f @sysconfdir@/passwd ]; then
79174294Sobrien	PASSWD_FILE="-P @sysconfdir@/passwd"
8038494Sobrienelse
8138494Sobrien	PASSWD_FILE=""
8238494Sobrienfi
8338494Sobrien
8438494Sobriencase "$1" in
8538494Sobrien'start')
8638494Sobrien	#
8738494Sobrien	# Start the hlfsd mail redirector service
8838494Sobrien	#
8938494Sobrien	if [ -x @sbindir@/hlfsd -a -h $maildir ]
9038494Sobrien	then
91174294Sobrien		echo @sbindir@/hlfsd ${PASSWD_FILE} -a $altmaildir -x all -l $logdir/hlfsd /mail/home .mailspool
92174294Sobrien		@sbindir@/hlfsd ${PASSWD_FILE} -a $altmaildir -x all -l $logdir/hlfsd /mail/home .mailspool &
93119679Smbr		test -x /var/lock/subsys && touch /var/lock/subsys/hlfsd
9438494Sobrien	fi
9538494Sobrien	;;
9638494Sobrien
9738494Sobrien'stop')
9838494Sobrien	# prepend space to program name to ensure only amd process dies
9938494Sobrien	killproc " hlfsd"
100119679Smbr	test -f /var/lock/subsys/hlfsd && rm -f /var/lock/subsys/hlfsd
10138494Sobrien	;;
10238494Sobrien
10338494Sobrien'restart')
10438494Sobrien	# kill hlfsd, wait for it to die, then restart
10538494Sobrien	echo "killing hlfsd..."
10638494Sobrien	ctl-hlfsd stop
10738494Sobrien	echo "Waiting for 10 seconds..."
10842629Sobrien	sleep 10	# hope that would be enough
10938494Sobrien	echo "Restarting hlfsd..."
11038494Sobrien	ctl-hlfsd start
11138494Sobrien	;;
11238494Sobrien
11338494Sobrien*)
11438494Sobrien	echo "Usage: @sbindir@/ctl-hlfsd [ start | stop | restart ]"
11538494Sobrien	;;
11638494Sobrienesac
117