mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	Update omr-tracker for multi IPs server
This commit is contained in:
		
							parent
							
								
									16ab9a7722
								
							
						
					
					
						commit
						087561e002
					
				
					 3 changed files with 113 additions and 98 deletions
				
			
		|  | @ -39,84 +39,103 @@ _check_server() { | |||
| 
 | ||||
| _check_master() { | ||||
| 	local name=$1 | ||||
| 	local count=0 | ||||
| 	config_get master $1 master | ||||
| 	config_get ip $1 ip | ||||
| 	config_get port $1 port "65500" | ||||
| 	config_get disabled $1 disabled | ||||
| 	[ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { | ||||
| 		#_ping_server $ip | ||||
| 		_check_server $ip $port | ||||
| 		[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { | ||||
| 			logger -t "OMR-Tracker-Server" "Master server up, set it back" | ||||
| 			logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n') - $ip" | ||||
| 			uci -q batch <<-EOF >/dev/null | ||||
| 				set shadowsocks-libev.sss0.server=$ip | ||||
| 				commit shadowsocks-libev | ||||
| 				set v2ray.omrout.s_vmess_address=$ip | ||||
| 				set v2ray.omrout.s_vless_address=$ip | ||||
| 				commit v2ray | ||||
| 				set glorytun.vpn.host=$ip | ||||
| 				commit glorytun | ||||
| 				set dsvpn.vpn.host=$ip | ||||
| 				commit dsvpn | ||||
| 				set mlvpn.general.host=$ip | ||||
| 				commit mlvpn | ||||
| 				del openvpn.omr.remote | ||||
| 				add_list openvpn.omr.remote=$ip | ||||
| 				commit openvpn | ||||
| 			EOF | ||||
| 			/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/v2ray restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/glorytun restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/mlvpn restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/openvpn restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/dsvpn restart >/dev/null 2>/dev/null | ||||
| 		set_ip() { | ||||
| 			local ip=$1 | ||||
| 			#_ping_server $ip | ||||
| 			_check_server $ip $port | ||||
| 			[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ] && { | ||||
| 				logger -t "OMR-Tracker-Server" "Master server up, set it back" | ||||
| 				logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip" | ||||
| 				uci -q batch <<-EOF >/dev/null | ||||
| 					set shadowsocks-libev.sss${count}.server=$ip | ||||
| 					commit shadowsocks-libev | ||||
| 				EOF | ||||
| 				if [ "$count" -eq "0" ]; then | ||||
| 					uci -q batch <<-EOF >/dev/null | ||||
| 						set v2ray.omrout.s_vmess_address=$ip | ||||
| 						set v2ray.omrout.s_vless_address=$ip | ||||
| 						commit v2ray | ||||
| 						set glorytun.vpn.host=$ip | ||||
| 						commit glorytun | ||||
| 						set dsvpn.vpn.host=$ip | ||||
| 						commit dsvpn | ||||
| 						set mlvpn.general.host=$ip | ||||
| 						commit mlvpn | ||||
| 						del openvpn.omr.remote | ||||
| 						add_list openvpn.omr.remote=$ip | ||||
| 						commit openvpn | ||||
| 					EOF | ||||
| 					/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/v2ray restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/glorytun restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/mlvpn restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/openvpn restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/dsvpn restart >/dev/null 2>/dev/null | ||||
| 				fi | ||||
| 				/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null | ||||
| 			} | ||||
| 			count=$((count+1)) | ||||
| 		} | ||||
| 		config_list_foreach $1 ip set_ip | ||||
| 		break | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| _check_backup() { | ||||
| 	local name=$1 | ||||
| 	local count=0 | ||||
| 	config_get backup $1 backup | ||||
| 	config_get ip $1 ip | ||||
| 	config_get port $1 port | ||||
| 	config_get disabled $1 disabled | ||||
| 	[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { | ||||
| 		#_ping_server $ip | ||||
| 		_check_server $ip $port | ||||
| 		[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" = "$ip" ] && break | ||||
| 		[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { | ||||
| 			logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" | ||||
| 			uci -q batch <<-EOF >/dev/null | ||||
| 				set shadowsocks-libev.sss0.server=$ip | ||||
| 				commit shadowsocks-libev | ||||
| 				set v2ray.omrout.s_vmess_address=$ip | ||||
| 				set v2ray.omrout.s_vless_address=$ip | ||||
| 				commit v2ray | ||||
| 				set glorytun.vpn.host=$ip | ||||
| 				commit glorytun | ||||
| 				set dsvpn.vpn.host=$ip | ||||
| 				commit dsvpn | ||||
| 				set mlvpn.general.host=$ip | ||||
| 				commit mlvpn | ||||
| 				del openvpn.omr.remote | ||||
| 				add_list openvpn.omr.remote=$ip | ||||
| 				commit openvpn | ||||
| 			EOF | ||||
| 			/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/v2ray restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/glorytun restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/mlvpn restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/openvpn restart >/dev/null 2>/dev/null | ||||
| 			/etc/init.d/dsvpn restart >/dev/null 2>/dev/null | ||||
| 			sleep $waittest | ||||
| 			break | ||||
| 		set_ip() { | ||||
| 			#_ping_server $ip | ||||
| 			_check_server $ip $port | ||||
| 			[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break | ||||
| 			[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ] && { | ||||
| 				logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" | ||||
| 				uci -q batch <<-EOF >/dev/null | ||||
| 					set shadowsocks-libev.sss${count}.server=$ip | ||||
| 					commit shadowsocks-libev | ||||
| 				EOF | ||||
| 				if [ "$count" -eq "0" ]; then | ||||
| 					uci -q batch <<-EOF >/dev/null | ||||
| 						set v2ray.omrout.s_vmess_address=$ip | ||||
| 						set v2ray.omrout.s_vless_address=$ip | ||||
| 						commit v2ray | ||||
| 						set glorytun.vpn.host=$ip | ||||
| 						commit glorytun | ||||
| 						set dsvpn.vpn.host=$ip | ||||
| 						commit dsvpn | ||||
| 						set mlvpn.general.host=$ip | ||||
| 						commit mlvpn | ||||
| 						del openvpn.omr.remote | ||||
| 						add_list openvpn.omr.remote=$ip | ||||
| 						commit openvpn | ||||
| 					EOF | ||||
| 					/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/v2ray restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/glorytun restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/mlvpn restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/openvpn restart >/dev/null 2>/dev/null | ||||
| 					/etc/init.d/dsvpn restart >/dev/null 2>/dev/null | ||||
| 				fi | ||||
| 				/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null | ||||
| 				sleep $waittest | ||||
| 				break | ||||
| 			} | ||||
| 			count=$((count+1)) | ||||
| 		} | ||||
| 		config_list_foreach $1 ip set_ip | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -49,6 +49,7 @@ 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} | ||||
| wait_test=${OMR_TRACKER_WAIT_TEST:-0} | ||||
| server=${OMR_TRACKER_SERVER:-sss0} | ||||
| 
 | ||||
| nodns=0 | ||||
| 
 | ||||
|  | @ -65,9 +66,9 @@ while true; do | |||
| 	} | ||||
| 	if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then | ||||
| 		nocontact="" | ||||
| 		[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "" ] && { | ||||
| 		[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_$[name})" = "" ] && { | ||||
| 			_log "Shadowsocks is up (can contact via http ${host})" | ||||
| 			uci -q set openmptcprouter.omr.shadowsocks="up" | ||||
| 			uci -q set openmptcprouter.omr.ss_${name}="up" | ||||
| 			uci -q commit openmptcprouter.omr | ||||
| 		} | ||||
| 		if [ -z "$(iptables -t nat -L -n | grep ss_rules)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then | ||||
|  | @ -83,15 +84,15 @@ while true; do | |||
| 		[ "${last}" -ge "${retry}" ] && { | ||||
| 			if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then | ||||
| 				_log "Shadowsocks is down (can't contact via http ${nocontact})" | ||||
| 				uci -q set openmptcprouter.omr.shadowsocks="down" | ||||
| 				uci -q set openmptcprouter.omr.ss_${name}="down" | ||||
| 				uci -q commit openmptcprouter.omr | ||||
| 				/etc/init.d/shadowsocks-libev rules_down 2> /dev/null | ||||
| 				[ "$(uci show openmptcprouter.omr | grep ss | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null | ||||
| 				_get_ip | ||||
| 				server_ping=false | ||||
| 				server="$(uci -q get shadowsocks-libev.sss0.server)" | ||||
| 				_ping_server $server | ||||
| 				serverip="$(uci -q get shadowsocks-libev.${server}.server)" | ||||
| 				_ping_server $serverip | ||||
| 				if [ "$server_ping" = false ]; then | ||||
| 					_log "Server ($server) seems down, no answer to ping" | ||||
| 					_log "Server $server ($serverip) seems down, no answer to ping" | ||||
| 				fi | ||||
| 				sleep $wait_test | ||||
| 			fi | ||||
|  |  | |||
|  | @ -132,48 +132,42 @@ _launch_gre_tracker() { | |||
| 
 | ||||
| _initialize_shadowsocks_tracker() { | ||||
| 	local redir_tcp server tracker_server | ||||
| 	config_get redir_tcp ss_rules redir_tcp | ||||
| 	config_get tracker_server "tracker" server | ||||
| 	if [ "$redir_tcp" != "all" ]; then | ||||
| 		config_get server $redir_tcp server | ||||
| 	elif [ "$tracker_server" != "" ]; then | ||||
| 		server=$tracker_server | ||||
| 	else | ||||
| 		server="sss0" | ||||
| 	fi | ||||
| 	server=$1 | ||||
| 	#redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp) | ||||
| 	#config_get tracker_server ss_rules server | ||||
| 	config_get ss_disabled $server disabled 0 | ||||
| 	[ -z "$tracker_server" ] && { | ||||
| 	[ -z "$(uci -q get shadowsocks-libev.tracker_${server})" ] && [ "$ss_disabled" != "1" ] && { | ||||
| 		logger -t "omr-tracker" "Create ShadowSock tracker ss_local..." | ||||
| 		uci -q batch <<-EOF >/dev/null | ||||
| 		    set shadowsocks-libev.tracker=ss_local | ||||
| 		    set shadowsocks-libev.tracker.server=$server | ||||
| 		    set shadowsocks-libev.tracker.local_address="127.0.0.1" | ||||
| 		    set shadowsocks-libev.tracker.local_port=1111 | ||||
| 		    set shadowsocks-libev.tracker.mode=tcp_and_udp | ||||
| 		    set shadowsocks-libev.tracker.timeout=600 | ||||
| 		    set shadowsocks-libev.tracker.fast_open=1 | ||||
| 		    set shadowsocks-libev.tracker.syslog=0 | ||||
| 		    set shadowsocks-libev.tracker.reuse_port=1 | ||||
| 		    set shadowsocks-libev.tracker.mptcp=1 | ||||
| 		    set shadowsocks-libev.tracker.verbose=0 | ||||
| 		    commit shadowsocks-libev | ||||
| 		EOF | ||||
| 		/etc/init.d/shadowsocks-libev restart | ||||
| 	} | ||||
| 	[ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || { | ||||
| 		logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..." | ||||
| 		uci -q batch <<-EOF >/dev/null | ||||
| 		    set shadowsocks-libev.tracker.server=$server | ||||
| 		    set shadowsocks-libev.tracker_${server}=ss_local | ||||
| 		    set shadowsocks-libev.tracker_${server}.server=$server | ||||
| 		    set shadowsocks-libev.tracker_${server}.local_address="127.0.0.1" | ||||
| 		    set shadowsocks-libev.tracker_${server}.local_port=1111 | ||||
| 		    set shadowsocks-libev.tracker_${server}.mode=tcp_and_udp | ||||
| 		    set shadowsocks-libev.tracker_${server}.timeout=600 | ||||
| 		    set shadowsocks-libev.tracker_${server}.fast_open=1 | ||||
| 		    set shadowsocks-libev.tracker_${server}.syslog=0 | ||||
| 		    set shadowsocks-libev.tracker_${server}.reuse_port=1 | ||||
| 		    set shadowsocks-libev.tracker_${server}.mptcp=1 | ||||
| 		    set shadowsocks-libev.tracker_${server}.verbose=0 | ||||
| 		    commit shadowsocks-libev | ||||
| 		EOF | ||||
| 		/etc/init.d/shadowsocks-libev restart | ||||
| 	} | ||||
| #	[ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || { | ||||
| #		logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..." | ||||
| #		uci -q batch <<-EOF >/dev/null | ||||
| #		    set shadowsocks-libev.tracker.server=$server | ||||
| #		    commit shadowsocks-libev | ||||
| #		EOF | ||||
| #		/etc/init.d/shadowsocks-libev restart | ||||
| #	} | ||||
| } | ||||
| 
 | ||||
| _launch_shadowsocks_tracker() { | ||||
| 	local hosts timeout tries interval local_port enabled server wait_test | ||||
| 	 | ||||
| 	[ "$1" = "tracker" ] || return | ||||
| 	[ "$(echo $1 | grep tracker)" != "" ] || return | ||||
| 	 | ||||
| 	_validate_section "proxy" "proxy" | ||||
| 	 | ||||
|  | @ -194,6 +188,7 @@ _launch_shadowsocks_tracker() { | |||
| 	procd_append_param env "OMR_TRACKER_INTERVAL=$interval" | ||||
| 	procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port" | ||||
| 	procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" | ||||
| 	procd_append_param env "OMR_TRACKER_SERVER=$server" | ||||
| 	procd_set_param limits nofile="51200 51200" | ||||
| 	procd_set_param respawn 0 10 0 | ||||
| 	procd_set_param stderr 1 | ||||
|  | @ -235,7 +230,7 @@ start_service() { | |||
| 	local ss_disabled | ||||
| 	logger -t "omr-tracker" "Launching..." | ||||
| 	config_load shadowsocks-libev | ||||
| 	_initialize_shadowsocks_tracker | ||||
| 	config_foreach _initialize_shadowsocks_tracker server | ||||
| 
 | ||||
| 	config_load network | ||||
| 	config_foreach _launch_tracker interface | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue