naywatch: warn user
[feed/routing.git] / naywatch / files / naywatch.init
1 #!/bin/sh /etc/rc.common
2
3 . /usr/share/libubox/jshn.sh
4
5 USE_PROCD=1
6 START=95
7 STOP=01
8
9 log() {
10 local msg="$1"
11 logger -t naywatch "$msg"
12 }
13
14 wait_for_network()
15 {
16 ubus -t 15 wait_for network.interface.$1 2>/dev/null
17 }
18
19 boot()
20 {
21 local _interfaces
22 config_load naywatch
23 config_get _interfaces general interface
24
25 for interface in $_interfaces; do
26 wait_for_network interface
27 done
28
29 rc_procd start_service
30 }
31
32 start_service() {
33 procd_open_instance
34
35 config_load naywatch
36 local _check_interval
37 local _watchdog_timeout
38 local _use_watchdog
39 local _save_logs
40 local _interfaces
41
42 config_get _check_interval general "check_interval"
43 config_get _watchdog_timeout general "watchdog_timeout"
44 config_get _use_watchdog general "use_watchdog"
45 config_get _save_logs general "save_logs"
46 config_get _interfaces general "interface"
47
48 procd_set_param command /usr/bin/naywatch "$_check_interval" "$_watchdog_timeout" "$_use_watchdog" "$_save_logs" "$_interfaces"
49
50 procd_set_param respawn 3600 15 0
51
52 procd_set_param stdout 1
53 procd_set_param stderr 1
54
55 procd_close_instance
56 }
57
58 stop_service() {
59 exec 3>&- # close file again
60 sync && wait
61 }
62
63 watchdog_procd_runnig() {
64 watch=$(ubus call system watchdog)
65 json_load "$watch"
66 json_get_var watchdogstatus status
67 if [[ "$watchdogstatus" == "running" ]] ; then
68 echo "1"
69 return
70 fi
71 echo "0"
72 }
73
74 service_stopped() {
75 log "Naywatch Stopped!"
76 log "Try to handover watchdog to procd again."
77 for i in 1 2 3 4 5 6 7 8 9 10 ; do
78 sleep 5
79 ubus call system watchdog '{"stop":false}' > /dev/null
80 if [[ $(watchdog_procd_runnig) == "1" ]] ; then
81 break
82 fi
83 done
84 if [[ $(watchdog_procd_runnig) == "1" ]] ; then
85 log "Handover sucessfully!"
86 else
87 log "Handover to procd failed! Device can reboot!"
88 fi
89 }