#!/bin/sh
# hs-wrapper Copyright (C) Data Storage Institute, Singapore
#
# Please refer to the README files for more information. If any of these files
# are missing, please download a complete version from our website.
#
# http://nst.dsi.a-star.edu.sg/mcsa/hyperscsi/
#
# This file is *COMPUTER-GENERATED* and *NOT* user editable!

# Get Installation Defaults
source /etc/hscsi/install.config

if [ `echo $0 | grep -c "hs-server"` == 1 ]; then
	CONFFILE="$ETCPREFIX/hs-server.conf"
	CONFBIN="$BINPREFIX/hs-configure"
	CONFBINOPT="-s"
	HSPROCDIR="/proc/hscsi/server"
	REVPROCDIR="/proc/hscsi/client"
	HSMOD=hs-server
	fi
if [ `echo $0 | grep -c "hs-client"` == 1 ]; then
	CONFFILE="$ETCPREFIX/hs-client.conf"
	CONFBIN="$BINPREFIX/hs-configure"
	CONFBINOPT="-c"
	HSPROCDIR="/proc/hscsi/client"
	REVPROCDIR="/proc/hscsi/server"
	HSMOD=hs-client
	fi
if [ ! $HSMOD ]; then
	echo "Error - Don't know how I was called!"
	exit 1
	fi

# See how we were called.
case $1 in
	"start")
	# Error Checking - Files available?
	if [ ! -f $CONFFILE ]; then
		echo "** Error: Config File ( $CONFFILE ) Not Found - Exiting!"
		exit 1
		fi
	if [ ! -f $CONFBIN ]; then
		echo "** Error: hs-configure Program ( $CONFBIN ) Not Found - Exiting!"
		exit 1
		fi
	if [ -f $REVPROCDIR/config ]; then
		echo "** Error: Cannot load hs-server and hs-client simultaneously - Exiting!"
		exit 1
		fi
	if [ -f $HSPROCDIR/config ]; then
		echo "** Error: $HSMOD is already loaded - Exiting!"
		exit 1
		fi
	# Error Checking - scsi_mod loaded?
	if [ ! -f /proc/scsi/scsi ]; then
		echo "** Loading scsi_mod . . . "
		insmod scsi_mod
		fi
	echo "** Loading $HSMOD . . . "
	insmod $HSMOD
	if [ ! -f $HSPROCDIR/info ]; then
		echo "** Error: $HSMOD Module Failed To Load - Exiting!"
		exit 1
		fi
	echo "** Configuring $HSMOD . . . "
	$CONFBIN $CONFBINOPT $CONFFILE
	if [ -f $CONFTMPFILE ]; then
		rm -f $CONFTMPFILE
		fi
	echo "** Displaying All Messages . . . "
	cat $HSPROCDIR/message
	;;
	"stop")
	if [ ! -f $HSPROCDIR/info ]; then
		echo "Error: ** $HSMOD Module Not Loaded - Exiting!"
		exit 1
		fi
	if [ $HSMOD == hs-server ]; then
		if [ `$0 status | grep "Mac" -A 2 | grep "Mac" -v | grep "\-\-" -v | grep [:alnum] -c` != 0 ]; then 
			echo "Error: ** Clients Are Still Connected - Exiting!"
			echo "Use 'force-stop' option to force unloading . . ."
			exit 1
			fi
		fi
	echo "** Unloading $HSMOD . . . "
	rmmod $HSMOD
	;;
	"force-stop")
	if [ ! -f $HSPROCDIR/info ]; then
		echo "Error: ** $HSMOD Module Not Loaded - Exiting!"
		exit 1
		fi
	echo "** Unloading by force $HSMOD . . . "
	rmmod $HSMOD
	;;
	"restart")
	# Restart daemons.
	$0 stop
	$0 start
	;;
	"status")
	if [ ! -f $HSPROCDIR/info ]; then
		echo "** Error: $HSMOD Module Not Loaded - Exiting!"
		exit 1
		fi
	echo "** Displaying Status . . . "
	$CONFBIN -i
	echo " "
	echo "** Displaying Recent Messages . . . "
	tail -15 $HSPROCDIR/message
	;;
	*)
	echo "** Usage: $0 {start|stop|force-stop|restart|status}"
	exit 1
	;;
	esac
