mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-13 02:51:50 +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…
Reference in a new issue