forked from Spark/ssm-services
@@ -1,63 +1,28 @@
|
||||
#!/usr/bin/env watchman
|
||||
#!/usr/bin/env ssm
|
||||
# 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
|
||||
# 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_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!"
|
||||
printf 'Could not load module tun!\n'
|
||||
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"
|
||||
}
|
||||
pre_start() {
|
||||
cjdroute.check_tun_module
|
||||
}
|
||||
|
Reference in New Issue
Block a user