#!/bin/bash

# (c) 2014-2015 Sam Nazarko
# email@samnazarko.co.uk

# Set system time during boot using as a backup for ntpd when port 123 is blocked.

count=60
while [ $count -gt 0 ]; do
	if grep -q nfsroot /proc/cmdline; then
		ping -c 1 -W 2 time.osmc.tv >/dev/null 2>&1 && break
	else
		if connmanctl state | grep -iq 'online'; then break; fi
	fi
	sleep 5; let count-=5
done
if [ $count -lt 1 ]; then echo "No internet connectivity was detected within 60 seconds. Will try to send time query anyway."; fi

OLD_DATE=$(date -u)
for server in time.osmc.tv; do

	DATE_STRING=$(LANG=C wget --server-response --timeout=4 --max-redirect 0 --spider "$server" 2>&1 | egrep -o '^ *Date:.*' | sed 's/^ *Date: *//g')
	if [ -n "$DATE_STRING" ]; then
		echo "Updated time from $OLD_DATE to $(date -u --set="$DATE_STRING") using HTTP query to $server"
		exit
	fi
done
echo "Unable to set time using HTTP query - no response received from servers."
