mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
 | 
						|
 | 
						|
name=$0
 | 
						|
basename="$(basename $0)"
 | 
						|
 | 
						|
log() {
 | 
						|
	logger -p daemon.info -t "${basename}" "$@"
 | 
						|
}
 | 
						|
 | 
						|
get_ip() {
 | 
						|
	uci -q set openmptcprouter.vps.ipv4=$(wget -4 -qO- -T 3 http://ip.openmptcprouter.com)
 | 
						|
	if [ "$(sysctl -n net.ipv6.conf.all.disable_ipv6 | tr -d '\n')" = "0" ]; then
 | 
						|
		uci -q set openmptcprouter.vps.ipv6=$(wget -6 -qO- -T 3 http://ip.openmptcprouter.com)
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
timeout=${OMR_TRACKER_TIMEOUT:-5}
 | 
						|
interval=${OMR_TRACKER_INTERVAL:-10}
 | 
						|
retry=${OMR_TRACKER_TRIES:-4}
 | 
						|
proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
 | 
						|
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1 23.96.52.53}
 | 
						|
 | 
						|
nodns=0
 | 
						|
 | 
						|
last=0
 | 
						|
 | 
						|
uci -q set openmptcprouter.vps.shadowsocks="up"
 | 
						|
get_ip
 | 
						|
 | 
						|
while true; do
 | 
						|
	host="${hosts%% *}"
 | 
						|
	[ "$host" = "$hosts" ] || {
 | 
						|
		hosts="${hosts#* } $host"
 | 
						|
	}
 | 
						|
	if curl -s --socks5 "${proxy}" --max-time "${timeout}" "$host" &>/dev/null ; then
 | 
						|
		[ "${last}" -ge "${retry}" ] && {
 | 
						|
			log "Shadowsocks is up (can contact ${host})"
 | 
						|
			uci -q set openmptcprouter.vps.shadowsocks="up"
 | 
						|
		}
 | 
						|
		if ! /etc/init.d/shadowsocks-libev rules_exist ; then
 | 
						|
			/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
 | 
						|
			get_ip
 | 
						|
		fi
 | 
						|
		[ "$(uci -q get openmptcprouter.vps.ipv4)" = "" ] || ([ "$(sysctl -n net.ipv6.conf.all.disable_ipv6 | tr -d '\n')" = "0" ] && [ "$(uci -q get openmptcprouter.vps.ipv6)" = "" ]) && get_ip
 | 
						|
		last=0
 | 
						|
	else
 | 
						|
		last=$((last + 1 ))
 | 
						|
		[ "${last}" -ge "${retry}" ] && {
 | 
						|
			if /etc/init.d/shadowsocks-libev rules_exist ; then
 | 
						|
				log "Shadowsocks is down (can't contact ${host})"
 | 
						|
				uci -q set openmptcprouter.vps.shadowsocks="down"
 | 
						|
				/etc/init.d/shadowsocks-libev rules_down 2> /dev/null
 | 
						|
				get_ip
 | 
						|
			fi
 | 
						|
		}
 | 
						|
	fi
 | 
						|
	sleep "${interval}"
 | 
						|
done
 |