modules/freifunk: setup config and cron jobs for rdate; sync time on boot
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 1 May 2009 13:19:49 +0000 (13:19 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 1 May 2009 13:19:49 +0000 (13:19 +0000)
modules/freifunk/root/etc/config/freifunk
modules/freifunk/root/etc/init.d/freifunk
modules/freifunk/root/usr/sbin/ff_rdate [new file with mode: 0755]

index 516160e82f28ec33328704cf4ba2cca93c5662b2..ce855e2fe8e4e936fe481273a407df0c3389c519 100644 (file)
@@ -55,29 +55,28 @@ config defaults wifi_device
     option disabled  0
     option txpower   10
 
-
 config defaults wifi_iface
     option mode                adhoc
     option bssid    02:CA:FF:EE:BA:BE
     option sw_merge 1
 
-
 config defaults interface
     option netmask  255.0.0.0
     option dns      "88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222"
 
-
 config defaults alias
        option netmask  255.255.255.0
 
-
 config defaults dhcp
        option leasetime 30m
 
-
 config defaults olsr_interface
        option Ip4Broadcast 255.255.255.255
 
+config defaults time
+       option rdate_servers "128.138.140.44 171.64.7.77 171.64.7.99 81.169.154.44 130.133.1.10"
+
+
 config community leipzig
        option name "Freifunk Leipzig"
        option homepage http://leipzig.freifunk.net
index 13dfde7f682024f60e3602fef240224d59ac82c7..79bcbc7ba9e43cccade0953d39f35b71f39540da 100755 (executable)
@@ -17,6 +17,10 @@ boot() {
                echo "*/5 * * * *       /usr/sbin/ff_olsr_watchdog" >> /etc/crontabs/root
        }
 
+       grep -q '/usr/sbin/ff_rdate' /etc/crontabs/root || {
+               echo "0 */4 * * *       /usr/sbin/ff_rdate >> /etc/crontabs/root
+       }
+
        [ -f /etc/rc.local ] && . /etc/rc.local
        [ -d /etc/rc.local.d ] && {
                for file in /etc/rc.local.d/*; do
@@ -24,5 +28,5 @@ boot() {
                done
        }
 
-       /etc/init.d/cron restart
+       ( /usr/sbin/ff_rdate; /etc/init.d/cron restart ) &
 }
diff --git a/modules/freifunk/root/usr/sbin/ff_rdate b/modules/freifunk/root/usr/sbin/ff_rdate
new file mode 100755 (executable)
index 0000000..5a728f6
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+uci_get_one() {
+       for var in "$@"; do
+               uci -P /var/state get "$var" 2>/dev/null && break
+       done
+}
+
+local servers=$(uci_get_one "network.wan.lease_timesrv" \
+       "system.time.rdate_servers" "freifunk.time.rdate_servers")
+
+if [ -n "$servers" ]; then
+       for server in $servers; do
+               rdate -s $server >/dev/null 2>/dev/null && \
+                       logger -t rdate "Synced with $server" && break
+
+               logger -t rdate "Failed to sync with $server"
+       done
+else
+       logger -t rdate "No usable time server found"
+fi