setclock: prevent time bacjump by empty rtc batteries

This is a work around to prevent not working dns
resolution if the time jumps before the DNSSec signing key.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Arne Fitzenreiter
2016-10-08 15:43:54 +02:00
parent 0d7ca700bd
commit 0807ce69ee
2 changed files with 13 additions and 8 deletions

View File

@@ -7,6 +7,7 @@ etc/rc.d/init.d/network
etc/rc.d/init.d/networking/red.down/05-update-dns-forwarders etc/rc.d/init.d/networking/red.down/05-update-dns-forwarders
etc/rc.d/init.d/networking/red.up/05-update-dns-forwarders etc/rc.d/init.d/networking/red.up/05-update-dns-forwarders
etc/rc.d/init.d/ntp etc/rc.d/init.d/ntp
etc/rc.d/init.d/setclock
etc/rc.d/init.d/unbound etc/rc.d/init.d/unbound
etc/rc.d/rc0.d/K79unbound etc/rc.d/rc0.d/K79unbound
etc/rc.d/rc3.d/S21unbound etc/rc.d/rc3.d/S21unbound

View File

@@ -30,16 +30,20 @@ case ${1} in
fi fi
hwclock --hctosys ${CLOCKPARAMS} &>/dev/null hwclock --hctosys ${CLOCKPARAMS} &>/dev/null
if [ ! ${?} == 0 ]; then date
if [ -s /var/log/messages ]; then
boot_mesg -n "No RTC found, set time to last log accesstime ... " if [ -s /var/log/messages ]; then
DATE=`stat --format "%y" /var/log/messages | cut -d" " -f1` LOGTIMESTAMP=`stat --format "%y" /var/log/messages`
TIME=`stat --format "%y" /var/log/messages | sed -e "s|\..*||g" | cut -d" " -f2` LOGTIME=`date +%s -d "$LOGTIMESTAMP"`
date -s $DATE > /dev/null SYSTIME=`date +%s`
date -s $TIME if [ $SYSTIME -lt $LOGTIME ]; then
boot_mesg "Warning! clock runs later than last log access. Check battery/rtc!"
date -s "$LOGTIMESTAMP"
echo_warning;
else
echo_ok;
fi fi
fi fi
evaluate_retval
;; ;;
stop) stop)