Blob Blame History Raw
#!/bin/bash
#
# rabbit        Startup script for the RabbIT proxy server
#
# chkconfig: - 85 15
# description: RabbIT is a web proxy that speeds up web surfing over slow links by doing: 
#	o Compress text pages to gzip streams. This reduces size by up to 75% 
#	o Compress images to 10% jpeg. This reduces size by up to 95% 
#	o Remove advertising 
#	o Remove background images 
#	o Cache filtered pages and images 
#	o Uses keepalive if possible 
#	o Easy and powerful configuration 
#	o Multi threaded solution written in java 
#	o Modular and easily extended 
#	o Complete HTTP/1.1 compliance
# config: /etc/RabbIT/access
# config: /etc/RabbIT/allowed
# config: /etc/RabbIT/cache_only.conf
# config: /etc/RabbIT/empty.conf
# config: /etc/RabbIT/nocache.conf
# config: /etc/RabbIT/rabbit.conf
# config: /etc/RabbIT/users
# pidfile: /var/run/RabbIT.pid
#
### BEGIN INIT INFO
# Provides: rabbit
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: distcache
# Default-Stop: 0 1 6
# Short-Description: Start and stop the RabbIT proxy server
# Description: RabbIT is a web proxy that speeds up web surfing over slow links by doing: 
#	o Compress text pages to gzip streams. This reduces size by up to 75% 
#	o Compress images to 10% jpeg. This reduces size by up to 95% 
#	o Remove advertising 
#	o Remove background images 
#	o Cache filtered pages and images 
#	o Uses keepalive if possible 
#	o Easy and powerful configuration 
#	o Multi threaded solution written in java 
#	o Modular and easily extended 
#	o Complete HTTP/1.1 compliance
### END INIT INFO

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

bin='/usr/bin/RabbIT'
prog='RabbIT proxy'
pidfile=${PIDFILE-/var/run/rabbit.pid}
lockfile=${LOCKFILE-/var/lock/subsys/rabbit}
HTDOCS_DIR="{{HTDOCS}}"
USER='rabbit'
RETVAL=0

start(){
	echo -n $"Starting $prog: "
	daemon +15 --pidfile="$pidfile" --user="$USER" sh -c "cd \"$HTDOCS_DIR\"; exec \"$bin\" 2>&1 >> /var/log/RabbIT/main_run.log &"
	RETVAL=$?
	echo
		if [ 0 -eq $RETVAL ]; then
		touch ${lockfile}
		#Pid of parent sh script
		p=$( __pids_pidof "$bin" )
			[ -n $p ] && echo "Error: pid not found" && exit 1
		# Pid of child. Real java process!!! Idea from: http://209.85.129.132/search?q=cache:QnI67WuZkRcJ:www.experts-exchange.com/Programming/System/Linux/Q_20943601.html+kill+all+childs&cd=14&hl=en&ct=clnk
		p=$(ps axef -o ppid,pid | sed -nr "s#^$p (.+)\$#\1#p")
		echo $p > "$pidfile"
		fi
	return $RETVAL
}

stop(){
	echo -n $"Stopping $prog: "
	killproc -p ${pidfile}
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
        status $bin
	RETVAL=$?
	;;
  restart)
	stop
	start
	;;
  condrestart)
	if [ -f ${pidfile} ] ; then
		stop
		start
	fi
	;;
  *)
	echo $"Usage: $prog {start|stop|restart|condrestart|status}"
	RETVAL=3
esac

exit $RETVAL