#!/usr/bin/env watchman # Two warnings: # 1) This script uses a script to run cjdroute and feed it # the config. It can be found in the main cjdns repo: # contrib/sh/run-cjdroute.sh # Or here: http://ix.io/fYT # 2) service_respawn is disabled by default because you need # "noBackground":1 in cjdroute.conf for it to actually work. # Barely. unset reload #service_respawn=true service_command='/usr/bin/run-cjdroute' cjdroute_admin_port='11234' cjdroute.check_tun_module() { [[ -e '/dev/net/tun' ]] || { modprobe tun || { watchman.err "Could not load module tun!" return 1 } } } start() { cjdroute.check_tun_module || { return 1; } watchman.start } get_control_pid() { lsof -i :"$cjdroute_admin_port" | tail -1 | cut -d ' ' -f 2 } status() { # Check the actual cjdroute process and not the watchdog cjdroute_control_pid=$( get_control_pid ) counter=0 until kill -0 "$cjdroute_control_pid"; do cjdroute_control_pid=$( get_control_pid ) (( counter >= 5 )) && { watchman.msg "cjdroute is down" return 1 } (( counter++ )) sleep 1 done watchman.msg "cjdroute is running ($cjdroute_control_pid)" } stop() { [[ "$service_respawn" == 'true' ]] && { watchman.stop; } # stopping the watchdog # Stopping the actual s-o-b daemon that won't die properly. cjdroute_control_pid=$( get_control_pid ) watchman.pid_check "$cjdroute_control_pid" && { kill "$cjdroute_control_pid" watchman.pid_wait "$cjdroute_control_pid" } }