#!/bin/sh

ptt_killme()
{
	echo "letting browser process $PTT_PID CONTinuing..."
	#kill -CONT $PTT_PID 2>&1 > /dev/null
	kill -CONT -$PTT_GID 2>&1 > /dev/null
	exit 0
}
trap ptt_killme INT

ptt_kill_plugins()
{
PTT_PID=$1
while true; do
	PTT_FPID=`ps ax | grep "plugin-container" | grep " $PTT_PID "`
	if [ "x$PTT_FPID" != "x" ]; then
		PTT_FPID=`echo $PTT_FPID | awk '{ print $1 }'`
		echo "Killing plugin-container at $PTT_FPID..."
		kill -9 $PTT_FPID
	fi
	PTT_FPID=`ps ax | grep "libflash" | grep "plugin-container" | grep $PTT_PID`
	if [ "x$PTT_FPID" != "x" ]; then
		PTT_FPID=`echo $PTT_FPID | awk '{ print $1 }'`
		echo "Killing flash at $PTT_FPID..."
		kill -9 $PTT_FPID
	fi
	PTT_FPID=`ps ax | grep "java" | grep "plugin-container" | grep $PTT_PID`
	if [ "x$PTT_FPID" != "x" ]; then
		PTT_FPID=`echo $PTT_FPID | awk '{ print $1 }'`
		echo "Killing java at $PTT_FPID..."
		kill -9 $PTT_FPID
	fi
	PTT_FPID=`ps ax | grep "java" | grep "sun.applet.PluginMain" | grep $PTT_PID`
	if [ "x$PTT_FPID" != "x" ]; then
		PTT_FPID=`echo $PTT_FPID | awk '{ print $1 }'`
		echo "Killing java at $PTT_FPID..."
		kill -9 $PTT_FPID
	fi
	if [ "x$2" == "x-1" ]; then
		break
	fi
	sleep 20
done
}

PTT_BASENAME=`basename $0`
PTT_FLS_ONLY="n"
PTT_GREP="default"
PTT_LIMIT=3
if [ -f ~/.config/ptt.d/pttfflimit.conf ]; then
	. ~/.config/ptt.d/pttfflimit.conf
elif [ -f /etc/ptt.d/pttfflimit.conf ]; then
	. /etc/ptt.d/pttfflimit.conf
fi

if [ "x$1" == "x-f" ]; then
	PTT_FLS_ONLY="y"
	shift
fi

if [ "x$1" != "x" ]; then
	PTT_GREP="$1"
fi

if [ "x$2" != "x" ]; then
	PTT_LIMIT=$2
fi

PTT_PID=`ps -eo pid,pgid,args | grep firefox | grep -v plugin-container | grep -v $PTT_BASENAME | grep " $PTT_GREP"`
echo $PTT_PID
PTT_GID=`echo $PTT_PID | awk '{ print $2 }'`
PTT_PID=`echo $PTT_PID | awk '{ print $1 }'`

if [ "x$PTT_GID" == "x0" ]; then
	PTT_GID=$PTT_PID
fi
if [ "x$PTT_PID" == "x" ]; then
	echo "Browser process not found, exiting."
	exit 1
fi

if [ "$PTT_FLS_ONLY" == "y" ]; then
	echo "Not limiting browser."
	ptt_kill_plugins $PTT_PID
	exit
fi

#ptt_kill_plugins $PTT_PID &
#PTT_KILL=$!
PTT_KILL=

if [ "x$PTT_LIMIT" == "x-1" ]; then
	ptt_kill_plugins $PTT_PID $PTT_LIMIT
	echo "STOPping browser process at $PTT_PID..."
	#kill -STOP $PTT_PID 2>&1 > /dev/null
	kill -STOP -$PTT_GID 2>&1 > /dev/null
	read
	ptt_killme
else
	ptt_kill_plugins $PTT_PID &
	PTT_KILL=$!
	echo "Limiting browser at $PTT_PID... (at $PTT_LIMIT%)"
	cpulimit -m -l $PTT_LIMIT -p $PTT_PID 2>&1 > /dev/null
fi

kill $PTT_KILL


