Icecast Init Script

From Wiki
Jump to: navigation, search
#!/bin/bash
#
# Init file for Icecast server daemon
#
# chkconfig: 345 55 25
# description: Icecast streaming mp3 server daemon
#
# processname: icecast
# config: /etc/icecast.xml
# pidfile: /var/run/icecast.pid

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

# pull in sysconfig settings
[ -f /etc/sysconfig/icecast ] && . /etc/sysconfig/icecast

RETVAL=0
prog="icecast"

# Some functions to make the below more readable
PREFIX=/usr
PATH=$PATH:$PREFIX/bin
PIDFILE=/var/run/icecast.pid
CONF_FILE=/etc/icecast.xml

[ -f $PREFIX/bin/icecast ] || ( echo Failed to locate icecast binary: $PREFIX/bin/icecast && exit )
[ -f $CONF_FILE          ] || ( echo Failed to locate icecast configuration file: $CONF_FILE && exit )

OPTIONS="-b -c $CONF_FILE"

start()
{
	echo -n $"Starting $prog:"
	ulimit -c unlimited # dump core for debugging purposes
	ulimit -n 32768
	daemon icecast icecast $OPTIONS
	RETVAL=$?
	[ "$RETVAL" = 0 ] && touch /var/lock/subsys/icecast
	echo
	pidof icecast > $PIDFILE
	return $RETVAL
}

stop()
{
	echo -n $"Stopping $prog:"
	killproc icecast -TERM
	RETVAL=$?
	[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/icecast
	echo
	rm -f $PIDFILE
	return $RETVAL
}

reload()
{
	echo -n $"Reloading $prog:"
	killproc icecast -HUP
	RETVAL=$?
	echo
	return $RETVAL
}

condrestart()
{
    [ -e /var/lock/subsys/icecast ] && restart
    return 0
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		# wait for listening sockets to clear
		echo "Waiting 5 seconds before restarting..."
		sleep 5
		start
		;;
	reload)
		reload
		;;
	condrestart)
	        condrestart
		;;
	status)
		status icecast
		RETVAL=$?
		;;
	*)
		echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
		RETVAL=1
esac
exit $RETVAL