diff options
Diffstat (limited to 'modules/freifunk/root/usr/sbin/ff_olsr_watchdog')
-rwxr-xr-x | modules/freifunk/root/usr/sbin/ff_olsr_watchdog | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/freifunk/root/usr/sbin/ff_olsr_watchdog b/modules/freifunk/root/usr/sbin/ff_olsr_watchdog new file mode 100755 index 000000000..2b4fabed1 --- /dev/null +++ b/modules/freifunk/root/usr/sbin/ff_olsr_watchdog @@ -0,0 +1,29 @@ +#!/usr/bin/lua + +require "os" +require "io" +require "uci" +require "posix" + +if posix.access("/var/run/olsrd.pid") then + local stamp, intv + local x = uci.cursor() + + x:foreach("olsrd", "LoadPlugin", + function(s) + if s.library == "olsrd_watchdog.so.0.1" then + intv = tonumber(s.interval) + stamp = s.file + end + end) + + if intv and posix.access(stamp) then + local systime = os.time() + local wdgtime = tonumber(io.lines(stamp)()) + + if not wdgtime or ( systime - wdgtime ) > intv then + os.execute("logger -t 'OLSR watchdog' 'Process died - restarting!'") + os.execute("/etc/init.d/olsrd restart") + end + end +end |