#!/bin/bash

command="$*"

DIR="$( cd $"$( dirname "$0" )" && pwd )"
DATE=`date +%Y%m%d-%H%M`
LOGDIR="${DIR}/logs/$DATE"

LOGFILE=${LOGDIR}/dmesg.txt
PCAPFILE=${LOGDIR}/capture.pcap

mkdir -p $LOGDIR

echo "Start logger "
rm -rf ${DIR}/logs/current
ln -s ${LOGDIR} ${DIR}/logs/current
sudo sh -c "dmesg -c > /dev/null"
(dmesg -w >& ${LOGFILE})&
logpid=$!

echo "Starting tshark"
mon=`ip link | grep mon | wc -l`
if [ $mon -eq 0 ]; then
	phy=`iw phy | head -1 | cut -d ' ' -f2,2`

	echo "Creating monitor interface on ${phy}"
	sudo iw phy $phy interface add mon type monitor
fi
sudo ip link set dev mon up 

sudo touch ${PCAPFILE}
sudo tshark -i mon -q -Q -w ${PCAPFILE}&
tsharkpid=$!

function terminate
{
	echo "Stopping tshark"
	sudo killall tshark
	wait ${tsharkpid}

	echo "Stopping dmesg"
	sudo kill ${logpid}
	wait ${logpid}

	sudo chown ${USER} ${LOGFILE} ${PCAPFILE}

	echo "Removing monitor interface"
	sudo ip link set dev mon down
	sudo iw dev mon del
}

trap terminate SIGINT 

sleep 2
sh -c "$command"

terminate
exit 0
