Save time by touching /etc/config/sysfixtime, so it's included in backups Introduce save_time_interval config (in days) to choose how often time is saved to flash (default 30) Use busybox ntpd -S option so time is saved regularly and not only on clean shutdown/reboot Fix time on startup if system time is inferior to stored time
Signed-off-by: Etienne CHAMPETIER <etienne.champet...@free.fr> --- package/utils/busybox/Makefile | 8 ++++++ package/utils/busybox/files/sysfixtime | 44 +++++++++++++++++++++++++++++ package/utils/busybox/files/sysfixtime.conf | 2 ++ package/utils/busybox/files/sysntpd | 3 +- 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100755 package/utils/busybox/files/sysfixtime create mode 100644 package/utils/busybox/files/sysfixtime.conf diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile index cf4f1f2..86a359f 100644 --- a/package/utils/busybox/Makefile +++ b/package/utils/busybox/Makefile @@ -50,6 +50,10 @@ define Package/busybox/config source "$(SOURCE)/Config.in" endef +define Package/busybox/conffiles +/etc/config/sysfixtime +endef + CONFIG_TEMPLATE:=./config/default LDLIBS:=m crypt @@ -114,6 +118,10 @@ define Package/busybox/install $(INSTALL_BIN) ./files/cron $(1)/etc/init.d/cron $(INSTALL_BIN) ./files/telnet $(1)/etc/init.d/telnet $(INSTALL_BIN) ./files/sysntpd $(1)/etc/init.d/sysntpd + $(INSTALL_BIN) ./files/sysfixtime $(1)/etc/init.d/sysfixtime + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) ./files/sysfixtime.conf $(1)/etc/config/sysfixtime + touch $(1)/etc/config/sysfixtime -rm -rf $(1)/lib64 endef diff --git a/package/utils/busybox/files/sysfixtime b/package/utils/busybox/files/sysfixtime new file mode 100755 index 0000000..3845234 --- /dev/null +++ b/package/utils/busybox/files/sysfixtime @@ -0,0 +1,44 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2013-2014 OpenWrt.org + +START=05 +STOP=95 + +TIMEFILE="/etc/config/sysfixtime" + +EXTRA_COMMANDS="save save2 step stratum periodic unsync" +EXTRA_HELP=" save save time to flash by touching $TIMEFILE" + +start() { + CURTIME=`date '+%Y%m%d%H%M'` + SAVEDTIME=`date '+%Y%m%d%H%M' -r $TIMEFILE` + [[ $CURTIME -lt $SAVEDTIME ]] && \ + date -s $SAVEDTIME && \ + /usr/bin/logger -t sysfixtime -p daemon.notice "Time fixed" +} + +save2() { + local save_time_interval + config_load sysfixtime + config_get save_time_interval sysfixtime save_time_interval 30 + + CURTIME=`date +%s` + SAVEDTIME=`date +%s -r $TIMEFILE` + + [[ $((CURTIME - SAVEDTIME)) -gt $((save_time_interval*24*60*60)) ]] && save +} + +save() { + [[ -w $TIMEFILE ]] && \ + cat /dev/null >> $TIMEFILE && \ + touch $TIMEFILE && \ + /usr/bin/logger -t sysfixtime -p daemon.notice "Time saved to flash" +} + +stop() { save2; } + +step() { save2; } +stratum() { save2; } +periodic() { save2; } +unsync() { exit; } + diff --git a/package/utils/busybox/files/sysfixtime.conf b/package/utils/busybox/files/sysfixtime.conf new file mode 100644 index 0000000..d396f69 --- /dev/null +++ b/package/utils/busybox/files/sysfixtime.conf @@ -0,0 +1,2 @@ +config sysfixtime sysfixtime + option save_time_interval 30 diff --git a/package/utils/busybox/files/sysntpd b/package/utils/busybox/files/sysntpd index add7762..2612bc6 100755 --- a/package/utils/busybox/files/sysntpd +++ b/package/utils/busybox/files/sysntpd @@ -1,5 +1,5 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2011 OpenWrt.org +# Copyright (C) 2011-2014 OpenWrt.org START=98 @@ -24,6 +24,7 @@ start_service() { procd_open_instance procd_set_param command "$PROG" -n [ "$enable_server" = "1" ] && procd_append_param command -l + procd_append_param command -S /etc/init.d/sysfixtime for peer in "$server"; do procd_append_param command -p $peer done -- 1.8.4.2 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel