#!/bin/sh
# Pass IP info to server listed in file (x2)

WEB1=/var/local/data/Web1.txt
WEB2=/var/local/data/Web2.txt
CATWEB1=0
CATWEB2=0
SERIAL=$(cat /var/local/data/SerialNumber.txt)
DATE=$(date | sed 's/ /+/g')
EIP=$(/sbin/ifconfig | sed -n '/^\<eth[01]\>/{N;p}' | sed '/^[ ]*inet addr:/!d; s/^[ ]*inet addr://;q' | sed 's/ .*$//')
WIP=$(/sbin/ifconfig | sed -n '/^\<wlan[01]\>/{N;p}' | sed '/^[ ]*inet addr:/!d; s/^[ ]*inet addr://;q' | sed 's/ .*$//')
GIP=$(/sbin/ifconfig | sed -n '/^\<ppp0\>/{N;p}' | sed '/^[ ]*inet addr:/!d; s/^[ ]*inet addr://;q' | sed 's/ .*$//')
MODEM=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modem from thisdev;")
PHONE=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemphone from thisdev;")
MDATA=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modembalance from thisdev;")
MAIR=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modembalancea from thisdev;")
MBTIME=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemtime from thisdev;")
MSIG=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemsignal from thisdev;")
MMODE=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemmode from thisdev;")
MSTIME=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemstime from thisdev;")
SSID=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select wlanssid from thisdev;")
# Initialise values to 0
SERIALO=-1
GIPO=-1
EIPO=-1
MODEMO=-1
PHONEO=-1
MDATAO=-1
MAIRO=-1
MBTIMEO=-1
MSIGO=-1
MMODEO=-1
MSTIMEO=-1
SSIDO=-1
SEND1=0
SEND2=0

# update cron job if needed
/usr/local/bin/updateipnotifyc.sh

# Check for Webx.txt files and create if necessary
if [ -e $WEB1 ]
	then
	CATWEB1=$(cat /var/local/data/Web1.txt)
	if [ $CATWEB1 != "off" ]
		then
		SEND1=1
	fi
else
	touch Web1.txt
	echo http://whoami.cstimeclocks.com/whoami > $WEB1
	CATWEB1=$(cat /var/local/data/Web1.txt)
	SEND1=1
fi

if [ -e $WEB2 ]
	then
	CATWEB2=$(cat /var/local/data/Web2.txt)
	if [ $CATWEB2 != "off" ]
		then
		SEND2=1
	fi
else
	touch Web2.txt
	echo off > $WEB2
	CATWEB2=$(cat /var/local/data/Web2.txt)
	SEND2=0
fi


if [ $SERIAL ]
	then
	SERIALO=$SERIAL
fi

if [ $GIP ]
	then
	GIPO=$GIP
fi

if [ $EIP ]
	then
	EIPO=$EIP
	elif [ $WIP ]
	then
	EIPO=$WIP
	SSIDO=$SSID
fi

if [ $MAIR ]
	then
	MAIRO=$MAIR
fi

if [ $MDATA ]
	then
	MDATAO=$MDATA
fi

if [ $MBTIME ]
	then
	MBTIMEO=$MBTIME
fi

if [ $MSIG ]
	then
	MSIGO=$MSIG
fi

if [ $MMODE ]
	then
	MMODEO=$MMODE
fi

if [ $MSTIME ]
	then
	MSTIMEO=$MSTIME
fi

if [ $PHONE ]
	then
	PHONEO=$PHONE
fi

if [ $MODEM ]
	then
	MODEMO=$MODEM
fi

sleep 1

# send to monitoring server/s
if [ $SEND1 -eq 1 ]
	then
	CURLOUT=$(/usr/bin/curl -d serial=$SERIALO -d date="$DATE" -d ethip=$EIPO -d ssid="$SSIDO" -d gprsip=$GIPO -d airtime="$MAIRO" -d data="$MDATAO" -d baltime="$MBTIME" -d msig="MSIGO" -d mmode="MMODEO" -d mst="MSTIMEO" -d phone="$PHONEO" -d modem="$MODEMO" $CATWEB1 -s -S 2>&1)
fi
if [ $SEND2 -eq 1 ]
	then
	CURLOUT=$(/usr/bin/curl -d serial=$SERIALO -d date="$DATE" -d ethip=$EIPO -d ssid="$SSIDO" -d gprsip=$GIPO -d airtime="$MAIRO" -d data="$MDATAO" -d baltime="$MBTIME" -d msig="MSIGO" -d mmode="MMODEO" -d mst="MSTIMEO" -d phone="$PHONEO" -d modem="$MODEMO" $CATWEB2 -s -S 2>&1)
fi

# If there was an error while ppp is connected, then log the error to modem log.
TEST=$'<?xml version="1.0" encoding="utf-8"?>\r'
if [[ $MODEM -eq 1 ]] && [[ $GIPO != -1 ]]
then
	if [[ $CURLOUT != $TEST ]]
	then
		DATE=$(date +%Y_%m_%d)
		FILENAME=/var/sqllog/modem_log_$DATE.log
		TIME=$(date)
		echo "$TIME ;;;;;;;;;;;; $CURLOUT" >> $FILENAME
	fi
fi

## Data comms failure handling
CHECKFILE="/var/tmp/pppfail"
MAXFAILS=3

if [[ $MODEM -eq 1 ]]
then
	if [[ $CURLOUT != $TEST ]]
	then
		# Log a failure
		echo "fail" >> $CHECKFILE
	fi
	if [[ -e $CHECKFILE ]]
	then
		# Check failure count
		FAILCOUNT=$(cat $CHECKFILE | wc -l)
		if [ $FAILCOUNT -ge $MAXFAILS ]
		then
			# Clear failure count file
			> $CHECKFILE
			# reset modem
			/etc/init.d/pppcontrol stop
			sleep 2
			/etc/init.d/muxcontrol stop
			sleep 10
			/etc/init.d/muxcontrol start
			sleep 10
			/etc/init.d/pppcontrol start
		fi
	fi
fi

exit 0
