#!/bin/bash

. /usr/share/groovix/global.conf

	TRIES=$GX_NETWORK_TEST_ATTEMPTS
	if [ -z "$TRIES" ]; then
		TRIES=6
	fi

	TEST_TIMEOUT=$GX_NETWORK_TEST_TIMEOUT
	if [ -z "$TEST_TIMEOUT" ]; then
		TEST_TIMEOUT=10
	fi

	if [ -z "$GX_NETWORK_TEST_WAIT" ]; then
		GX_NETWORK_TEST_WAIT=10
	fi

	RESTART_NETWORK=$GX_NETWORK_TEST_RESTART_NETWORK

	TRIES_START=$TRIES
	
	echo -n "running $0 at " >> /var/log/groovix/network-test.log
	date >> /var/log/groovix/network-test.log
	
	
	PI=0
	pool[0]="http://util.groovix.net/tests/netup.html"
	pool[1]="http://util.groovix.net/tests/netup.html"
	pool[2]="http://google.com"
	#pool[0]="http://pac.groovix.net/bin/testnet.php"
	#pool[0]="http://pac.groovix.net/bin/getupdates.php?version=NETTEST&subversion=default"
	#pool[0]=http://groovix.net/ping.html
	#pool[1]=http://groovix.com/ping.html
	#pool[2]=http://open-sense.com/ping.html
	#pool[3]=http://google.com

	while [ $TRIES -ne 0 ] ; do
	#wget -O - ${pool[$PI]} > /dev/null 2>/dev/null
	wget --timeout=$TEST_TIMEOUT --tries=1 -O - ${pool[$PI]} 
	WGETRC=$?
	if [ $WGETRC -ne 0 ]; then
		echo -n "couldn't reach ${pool[$PI]}, still waiting for network to come up at " >> /var/log/groovix/network-test.log
                if [ "$TRIES" -eq 2 ] ; then
		if [ "$RESTART_NETWORK" = "true" ] ; then
			#echo  "restarting networking " >> /var/log/groovix/network-test.log
			#/etc/init.d/networking  restart >> /var/log/groovix/network-test.log
			echo "restarting all network interfaces"  | tee -a /var/log/groovix/network-test.log
			groovix-restart-network-devices | tee -a /var/log/groovix/network-test.log 2>&1

		fi
		fi
	        date  >> /var/log/groovix/network-test.log
	        let TRIES=TRIES-1
	        let PI=PI+1
		if [ -z "${pool[$PI]}" ]; then PI=0; fi
	        sleep $GX_NETWORK_TEST_WAIT
	else
		echo network is up: connection to ${pool[$PI]} verified
		let WAITED=$TRIES_START-$TRIES
	        TRIES=0
	        echo -n "network finally up after $WAITED tries at " >> /var/log/groovix/network-test.log
	        date  >> /var/log/groovix/network-test.log
	fi
	done

	exit $WGETRC
	
