#!/bin/sh
#
# IPCop CGIs
#
# This file is part of the IPCop Project
# 
# This code is distributed under the terms of the GPL
#
# (c) Eric Oberlander June 2002
# (c) Eric Oberlander December 2002 - internationalisation added
#
# /usr/local/bin/settime

ongreen=1
green=$(cat /var/ipfire/ethernet/settings | grep GREEN_NETADDRESS)
if [ -z "$green" ]; then
	:		# no Green subnet
else
	green=${green##*=}; green="${green%.*}.[0-9]"
	if [ -n "$(cat /var/ipfire/time/settime.conf | grep $green)" ]; then
		ongreen=0	# NTP on Green
	fi
fi

onorange=1
orange=$(cat /var/ipfire/ethernet/settings | grep ORANGE_NETADDRESS)
if [ -z "$orange" ]; then
	:		# no Orange subnet
else
	orange=${orange##*=}; orange="${orange%.*}.[0-9]"
	if [ -n "$(cat /var/ipfire/time/settime.conf | grep $orange)" ]; then
		onorange=0	# NTP on Orange
	fi
fi

# find out language
tlanguage=$(cat /var/ipfire/main/settings | grep LANGUAGE)
tlanguage=${tlanguage##*=}

if [ -n "$1" ]; then
	if [ -e /var/ipfire/red/active ] || [ "$ongreen" -eq 0 ] || [ "$onorange" -eq 0 ]; then
		/usr/bin/ntpdate -su $1 $2
		ntpdatetest=$?

		if [ "$ntpdatetest" -eq 0 ]; then
			case $tlanguage in
				en ) date "+%X %Z on %d %B %Y" > /var/ipfire/time/lastset ;
					logger -t ipfire "NTP synchronisation event" ;;
				de ) date "+%X Uhr am %d.%m.%Y" > /var/ipfire/time/lastset ;
					logger -t ipfire "NTP Synchronisierung" ;;
				*  ) date "+%X %Z, %Y-%m-%d" > /var/ipfire/time/lastset ;
					logger -t ipfire "NTP synchronisation" ;;
			esac

			/sbin/hwclock --systohc
			rm -f /var/ipfire/time/settimenow
			# reset counter variable
			cp /var/ipfire/time/counter.conf /var/ipfire/time/counter
		else
			case $tlanguage in
				de ) logger -t ipfire "ntpdate fehlerhaft" ;;
				*  ) logger -t ipfire "ntpdate error" ;;
			esac
		fi
	fi		
else
	echo Missing parameter
fi
