#!/bin/bash
SCRIPT_LOC=/usr/tapsetrpms/TEMPLATE_RPM_NAME-TEMPLATE_RPM_VERSION
function install()
{
echo "Installing Package..."
rpm -ivh TEMPLATE_RPM_NAME-TEMPLATE_RPM_VERSION-TEMPLATE_RPM_RELEASE.TEMPLATE_ARCH.rpm
if [ $? != 0 ]
then 
  echo "RPM install failed"
exit 0;
fi
echo "Package installed successfully"
}

function run()
{
echo "Gathering data... Please wait"
# Log file appears as systemtap_tcpipstat.out
TS=`date "+%Y%m%d-%H:%M:%S"`
export SYSTEMTAP_STAPIO=$SCRIPT_LOC/stapio
$SCRIPT_LOC/staprun $SCRIPT_LOC/TEMPLATE_RPM_NAME.ko > $SCRIPT_LOC/TEMPLATE_RPM_NAME.out 2>1 &
sleep $time
echo "Completed"
mv $SCRIPT_LOC/TEMPLATE_RPM_NAME.out $SCRIPT_LOC/TEMPLATE_RPM_NAME_${TS}.out
echo "Output file TEMPLATE_RPM_NAME_${TS}.out is in $SCRIPT_LOC directory"
ps -ef | grep TEMPLATE_RPM_NAME | grep stapio | awk '{print $2}' | xargs kill -SIGINT
echo "Postprocessing..."
$SCRIPT_LOC/TEMPLATE_RPM_NAME.post $SCRIPT_LOC/TEMPLATE_RPM_NAME_${TS}.out
}

function start()
{
 # check to see if tapset is installed
#echo "Collecting network statistics related to individual TCP sockets"
echo "Gathering data..."
export SYSTEMTAP_STAPIO=$SCRIPT_LOC/stapio
$SCRIPT_LOC/staprun $SCRIPT_LOC/TEMPLATE_RPM_NAME.ko > $SCRIPT_LOC/TEMPLATE_RPM_NAME.out 2>1 &
echo "Run TEMPLATE_RPM_NAME --stop to stop the script and process output"
}

function stop()
{
TS=`date "+%Y%m%d-%H:%M:%S"`
echo "Stopping systemtap_tcpipstat script"
ps -ef | grep TEMPLATE_RPM_NAME | grep stapio | awk '{print $2}' | xargs kill -SIGINT
echo "Done"
mv $SCRIPT_LOC/TEMPLATE_RPM_NAME.out $SCRIPT_LOC/TEMPLATE_RPM_NAME_${TS}.out
echo "Output file TEMPLATE_RPM_NAME_${TS}.out is in $SCRIPT_LOC/ directory"
echo "Postprocessing..."
$SCRIPT_LOC/TEMPLATE_RPM_NAME.post $SCRIPT_LOC/TEMPLATE_RPM_NAME_${TS}.out
}

function uninstall()
{
echo "Uninstalling Package..."
rpm -e TEMPLATE_RPM_NAME
}

function helptext()
{
 echo " "
 echo "USAGE: TEMPLATE_RPM_NAME [options] [parameters]"
 echo " "
 echo "Options: "
 echo " --install -i	Installs the tapset rpm"
 echo " --run -r	Runs the scripts for n minutes where n can be passed as a parameter. "
 echo "		The default value is 10 minutes. Post processing is performed after the script completes."
 echo " --start -s	Runs the script as a background process"
 echo " --stop -x	Stops the script and performs post processing"
 echo " --uninstall -u	Stops the script if running and uninstalls the rpm"
 echo " --all		Installs the rpm, runs the script, processes the output and"
 echo "		uninstalls the rpm"
 echo " --help		Displays this usage text"
 echo " "
 echo "Parameters: "
 echo " "
 echo " time=[x]	x is in minutes. Runs the script for x minutes. valid for --run(-r)"
 echo "		--start(-s) or --all(-a) options only"
# echo " ipaddress=[ip]	ip is a standard IPv4 address. The output will be filtered for this address"
 rpm -q --quiet TEMPLATE_RPM_NAME-TEMPLATE_RPM_VERSION
 if [ $? -eq 0 ]
 then
 	cat $SCRIPT_LOC/TEMPLATE_RPM_NAME.help
 fi
 echo " "
}

function parseparameters()
{
for i in $@
do
        tmpa=${1%%=*}
        tmpb=${1#$tmpa=}
        export $tmpa=$tmpb
        shift
done
}


#checking if its run by root
if [ $EUID -ne 0 ]
then
        echo "You need to be root to run this !"
        exit;
fi
option=$1
shift

if [ "$option" == "--all" ] || [ "$option" == "-a" ]
then
 install
fi

if [ "$option" == "--run" ] || [ "$option" == "-r" ] || [ "$option" == "--start" ] || [ "$option" == "-s" ] || [ "$option" == "--all" ] || [ "$option" == "-a" ]
then
  #make sure rpm is installed
   # check to see if tapset is installed
rpm -qa | grep "TEMPLATE_RPM_NAME"
rc=$?
if [ $rc != 0 ]
then
echo "Please install the rpm with the --install option"
exit 0
fi


  FILE=$SCRIPT_LOC/TEMPLATE_RPM_NAME.config
   # make sure file exist and readable
   if [ ! -f $FILE ]; then
  	echo "$FILE : does not exist"
   elif [ ! -r $FILE ]; then
  	echo "$FILE: cannot read"
   fi



   exec 3<&0
   exec 0<$FILE
   while read line
	do
        tmpa=${line%%=*}
        tmpb=${line#$tmpa=}
        declare $tmpa=$tmpb
	done
   exec 0<&3

   for i in $@
	do
	        tmpa=${1%%=*}
        	tmpb=${1#$tmpa=}
	        export $tmpa=$tmpb
        	shift
	done
fi


case $option in
        -i | --install )        install
				echo "Run TEMPLATE_RPM_NAME with options --run or --start to collect data"
                                exit
                                ;;
	-r | --run ) 	 			
				run
				exit
				;;
        -s | --start )         
				start
				exit
                                ;;
        -h | --help )           helptext
                                exit
                                ;;
        -u | --uninstall )      uninstall
				exit
				;;
        -x | --stop )		stop
				exit
				;;
	-a | --all )		run
				uninstall
				exit
				;;
        * )                     helptext
                                exit 1
esac
