#!/bin/sh
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :

name=$0
basename="$(basename $0)"

usage() {
	printf "Usage: %s: [-t TIMEOUT] [-v INTERVAL] [ -r RETRY ] HOST\n" "${name}"
	exit 2
}

log() {
	logger -p daemon.info -t "${basename}" "$@"
}

uri="ping"
timeout=5
interval=1
retry=0

while getopts "t:v:r:" opt; do
	case $opt in
		t) timeout="${OPTARG}";;
		v) interval="${OPTARG}";;
		r) retry="${OPTARG}";;
		*) usage;;
	esac
done

shift $((OPTIND - 1))

[ -z "$1" ] && usage

last=0

log "Starting..."

while true; do
	if curl -s --max-time "${timeout}" --retry "${retry}" "$1/${uri}" &>/dev/null ; then
		[ ${last} = 0 ] && log "Shadowsocks is up"
		/etc/init.d/shadowsocks ifup 2> /dev/null
		last=1
	else
		[ ${last} = 1 ] && log "Shadowsocks is down"
		/etc/init.d/shadowsocks ifdown 2> /dev/null
		last=0
	fi

	sleep "${interval}"
done
