#!/bin/bash
#
# Dit script start alle chroot's in de /chroot directory. 
# Chroot directories die met een # beginnen worden niet automatisch 
# opgestart of gestopt
#
# Bij het starten worden alle S* scripts in <chroot>/etc/rc2.d uitgevoerd. 
# Stop voert alle K* scripts in <chroot>/etc/rc5.d uit. 
# 
DIRPREFIX='/srv/chroot/' # / aan het einde moet

function start_chroot {
	CHROOT=`echo $1 | sed -e "s/\/$//"`

	if [ -f "/var/lock/$CHROOT" ]; then
		echo "Restarting chroot $CHROOT"

		for script in `ls  $DIRPREFIX/$CHROOT/etc/rc2.d/ | egrep '^S'`; do
			echo -n "CHROOT[$CHROOT] => "
			chroot "$DIRPREFIX/$CHROOT" "/etc/rc2.d/$script" restart 
		done
	else 
		echo "Starting chroot $CHROOT"

		
		mount -t proc none "$DIRPREFIX/$CHROOT/proc"
		touch "/var/lock/$CHROOT"

		for script in `ls  $DIRPREFIX/$CHROOT/etc/rc2.d/ | egrep '^S'`; do
			echo -n "CHROOT[$CHROOT] => "
			chroot "$DIRPREFIX/$CHROOT" "/etc/rc2.d/$script" start
		done
	fi
	
	echo "done"
}

function stop_chroot {
	CHROOT=`echo $1 | sed -e "s/\/$//"`
	echo "Stopping chroot $CHROOT"

	for script in `ls  $DIRPREFIX/${CHROOT}/etc/rc6.d/ | egrep '^K'`; do
		echo -n "CHROOT[$CHROOT] => "
		chroot "$DIRPREFIX/$CHROOT" "/etc/rc6.d/$script" stop
	done
	
	umount "$DIRPREFIX/$CHROOT/proc"
	rm "/var/lock/$CHROOT"
	
	echo "done"
}

case "$1" in
start)	
		if [ $2 ]; then
			start_chroot $2
		else
			echo "No chroot name given: (re)starting all chroots in $DIRPREFIX"

			for chroot in `ls -lA $DIRPREFIX | egrep '^d'| egrep '^d'| sed -r "s/.*\ +(.*?chroot)/\1/" | egrep -v '^#' | egrep -v '^lost'`; do
				start_chroot $chroot
			done
		fi
	;;
stop)
		if [ $2 ]; then
			stop_chroot $2
		else
			echo "No chroot name given: stopping all chroots in $DIRPREFIX"

			for chroot in `ls -lA $DIRPREFIX | egrep '^d'| egrep '^d'| sed -r "s/.*\ +(.*?chroot)/\1/" | egrep -v '^#' | egrep -v '^lost'`; do
				stop_chroot $chroot
			done
		fi
	;;
*)
		echo "Usage: chroot {start|stop} [dir_in_$DIRPREFIX]"
	;;
esac
