forked from Spark/ssm-services
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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() {
 | |
| 	if cjdroute.check_tun_module; then
 | |
| 		watchman.start
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| 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"
 | |
| 	}
 | |
| }
 |