mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Use all defined IPs for VPS check and fix IPv6 support
This commit is contained in:
parent
621c9aa7f1
commit
df025467e0
1 changed files with 68 additions and 33 deletions
|
@ -4,6 +4,8 @@
|
||||||
name=$0
|
name=$0
|
||||||
basename="$(basename $0)"
|
basename="$(basename $0)"
|
||||||
|
|
||||||
|
. /usr/lib/unbound/iptools.sh
|
||||||
|
|
||||||
_log() {
|
_log() {
|
||||||
logger -p daemon.info -t "${basename}" "$@"
|
logger -p daemon.info -t "${basename}" "$@"
|
||||||
}
|
}
|
||||||
|
@ -24,13 +26,23 @@ _check_server() {
|
||||||
local host=$1
|
local host=$1
|
||||||
local port=$2
|
local port=$2
|
||||||
local k=0
|
local k=0
|
||||||
|
local valid_ip6=$(valid_subnet6 $host)
|
||||||
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
|
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
|
||||||
ret=$(curl \
|
if [ "$valid_ip6" != "ok" ]; then
|
||||||
--max-time "$OMR_TRACKER_TIMEOUT" \
|
ret=$(curl \
|
||||||
-s \
|
--max-time "$OMR_TRACKER_TIMEOUT" \
|
||||||
-k \
|
-s \
|
||||||
"https://${host}:${port}/"
|
-k \
|
||||||
)
|
"https://${host}:${port}/"
|
||||||
|
)
|
||||||
|
else
|
||||||
|
ret=$(curl \
|
||||||
|
--max-time "$OMR_TRACKER_TIMEOUT" \
|
||||||
|
-s \
|
||||||
|
-k \
|
||||||
|
"https://[${host}]:${port}/"
|
||||||
|
)
|
||||||
|
fi
|
||||||
[ -n "$ret" ] && server_ping=true
|
[ -n "$ret" ] && server_ping=true
|
||||||
k=$((k+1))
|
k=$((k+1))
|
||||||
sleep "${intervaltries}"
|
sleep "${intervaltries}"
|
||||||
|
@ -40,16 +52,26 @@ _check_server() {
|
||||||
_check_server_intf() {
|
_check_server_intf() {
|
||||||
local host=$1
|
local host=$1
|
||||||
local port=$2
|
local port=$2
|
||||||
|
local valid_ip6=$(valid_subnet6 $host)
|
||||||
for intf in $(multipath | awk '/default/ {print $1}'); do
|
for intf in $(multipath | awk '/default/ {print $1}'); do
|
||||||
local k=0
|
local k=0
|
||||||
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
|
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
|
||||||
ret=$(curl \
|
if [ "$valid_ip6" != "ok" ]; then
|
||||||
--max-time "$OMR_TRACKER_TIMEOUT" \
|
ret=$(curl \
|
||||||
-s \
|
--max-time "$OMR_TRACKER_TIMEOUT" \
|
||||||
-k \
|
-s \
|
||||||
--interface $intf \
|
-k \
|
||||||
"https://${host}:${port}/"
|
--interface $intf \
|
||||||
)
|
"https://${host}:${port}/"
|
||||||
|
)
|
||||||
|
else
|
||||||
|
ret=$(curl \
|
||||||
|
--max-time "$OMR_TRACKER_TIMEOUT" \
|
||||||
|
-s \
|
||||||
|
-k \
|
||||||
|
"https://[${host}%${intf}]:${port}/"
|
||||||
|
)
|
||||||
|
fi
|
||||||
[ -n "$ret" ] && {
|
[ -n "$ret" ] && {
|
||||||
server_ping=true
|
server_ping=true
|
||||||
}
|
}
|
||||||
|
@ -89,21 +111,26 @@ _check_master() {
|
||||||
config_get ip $1 ip
|
config_get ip $1 ip
|
||||||
config_get port $1 port "65500"
|
config_get port $1 port "65500"
|
||||||
config_get disabled $1 disabled
|
config_get disabled $1 disabled
|
||||||
|
serverip=""
|
||||||
[ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
[ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
||||||
set_ip() {
|
check_ip() {
|
||||||
local ipd=$1
|
local ipd=$1
|
||||||
local ip=""
|
|
||||||
ipresolve="$(resolveip -4 $ipd | head -n 1)"
|
ipresolve="$(resolveip -4 $ipd | head -n 1)"
|
||||||
if [ -n "$ipresolve" ]; then
|
if [ -n "$ipresolve" ]; then
|
||||||
ip="$ipresolve"
|
serverip="$ipresolve"
|
||||||
else
|
else
|
||||||
ip6resolve="$(resolveip -6 $ipd | head -n 1)"
|
ip6resolve="$(resolveip -6 $ipd | head -n 1)"
|
||||||
[ -n "$ip6resolve" ] && ip="$ip6resolve"
|
[ -n "$ip6resolve" ] && serverip="$ip6resolve"
|
||||||
fi
|
fi
|
||||||
[ -z "$ip" ] && return
|
[ -z "$serverip" ] && return
|
||||||
#_ping_server $ip
|
#_ping_server $serverip
|
||||||
#_check_server $ip $port
|
#_check_server $serverip $port
|
||||||
_check_server_intf $ip $port
|
_check_server_intf $serverip $port
|
||||||
|
[ "$server_ping" = true ] && return
|
||||||
|
countips=$((countips+1))
|
||||||
|
}
|
||||||
|
set_ip() {
|
||||||
|
ip="$serverip"
|
||||||
if [ "$server_ping" = true ]; then
|
if [ "$server_ping" = true ]; then
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
|
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
|
||||||
logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back"
|
logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back"
|
||||||
|
@ -204,10 +231,10 @@ _check_master() {
|
||||||
script_alert_down="$(uci -q get omr-tracker.proxy.script_alert_down)"
|
script_alert_down="$(uci -q get omr-tracker.proxy.script_alert_down)"
|
||||||
[ -n "$script_alert_down" ] && eval $script_alert_down
|
[ -n "$script_alert_down" ] && eval $script_alert_down
|
||||||
fi
|
fi
|
||||||
countips=$((countips+1))
|
|
||||||
}
|
}
|
||||||
config_load openmptcprouter
|
config_load openmptcprouter
|
||||||
config_list_foreach $1 ip set_ip
|
config_list_foreach $1 ip check_ip
|
||||||
|
set_ip
|
||||||
#if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then
|
#if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then
|
||||||
# uci -q batch <<-EOF >/dev/null
|
# uci -q batch <<-EOF >/dev/null
|
||||||
# set shadowsocks-libev.sss${count}.server=$ip
|
# set shadowsocks-libev.sss${count}.server=$ip
|
||||||
|
@ -233,19 +260,26 @@ _check_backup() {
|
||||||
config_get ip $1 ip
|
config_get ip $1 ip
|
||||||
config_get port $1 port
|
config_get port $1 port
|
||||||
config_get disabled $1 disabled
|
config_get disabled $1 disabled
|
||||||
|
serverip=""
|
||||||
[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
||||||
set_ip() {
|
check_ip() {
|
||||||
local ip=$1
|
local ipd=$1
|
||||||
ipresolve="$(resolveip -4 $ip | head -n 1)"
|
ipresolve="$(resolveip -4 $ipd | head -n 1)"
|
||||||
if [ -n "$ipresolve" ]; then
|
if [ -n "$ipresolve" ]; then
|
||||||
ip="$ipresolve"
|
serverip="$ipresolve"
|
||||||
else
|
else
|
||||||
ip6resolve="$(resolveip -6 $ip | head -n 1)"
|
ip6resolve="$(resolveip -6 $ipd | head -n 1)"
|
||||||
[ -n "$ip6resolve" ] && ip="$ip6resolve"
|
[ -n "$ip6resolve" ] && serverip="$ip6resolve"
|
||||||
fi
|
fi
|
||||||
#_ping_server $ip
|
[ -z "$serverip" ] && return
|
||||||
#_check_server $ip $port
|
#_ping_server $serverip
|
||||||
_check_server_intf $ip $port
|
#_check_server $serverip $port
|
||||||
|
_check_server_intf $serverip $port
|
||||||
|
[ "$server_ping" = true ] && return
|
||||||
|
countips=$((countips+1))
|
||||||
|
}
|
||||||
|
set_ip() {
|
||||||
|
ip="$serverip"
|
||||||
#[ "$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" ] && break
|
||||||
if [ "$server_ping" = true ]; then
|
if [ "$server_ping" = true ]; then
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
|
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
|
||||||
|
@ -349,7 +383,8 @@ _check_backup() {
|
||||||
countips=$((countips+1))
|
countips=$((countips+1))
|
||||||
}
|
}
|
||||||
config_load openmptcprouter
|
config_load openmptcprouter
|
||||||
config_list_foreach $1 ip set_ip
|
config_list_foreach $1 ip check_ip
|
||||||
|
set_ip
|
||||||
#if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then
|
#if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then
|
||||||
# uci -q batch <<-EOF >/dev/null
|
# uci -q batch <<-EOF >/dev/null
|
||||||
# set shadowsocks-libev.sss${count}.server=$ip
|
# set shadowsocks-libev.sss${count}.server=$ip
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue