mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Merge branch 'test' into develop
This commit is contained in:
commit
c782a5d552
35 changed files with 2070 additions and 438 deletions
|
@ -5,6 +5,7 @@
|
|||
[ -n "$1" ] || exit
|
||||
|
||||
. /lib/functions.sh
|
||||
. /usr/lib/unbound/iptools.sh
|
||||
|
||||
# retrieve args
|
||||
OMR_TRACKER_INTERFACE="$1"
|
||||
|
@ -13,16 +14,20 @@ shift
|
|||
# export vars
|
||||
export OMR_TRACKER_INTERFACE
|
||||
export OMR_TRACKER_HOST
|
||||
export OMR_TRACKER_HOST6
|
||||
export OMR_TRACKER_TIMEOUT
|
||||
export OMR_TRACKER_STATUS
|
||||
export OMR_TRACKER_STATUS_MSG
|
||||
export OMR_TRACKER_PREV_STATUS
|
||||
export OMR_TRACKER_DEVICE
|
||||
export OMR_TRACKER_DEVICE_IP
|
||||
export OMR_TRACKER_DEVICE_IP6
|
||||
export OMR_TRACKER_DEVICE_GATEWAY
|
||||
export OMR_TRACKER_DEVICE_GATEWAY6
|
||||
|
||||
dscp=56 # set DSCP CS7 (56) in outgoing packets
|
||||
initial_hosts="$OMR_TRACKER_HOSTS"
|
||||
initial_hosts6="$OMR_TRACKER_HOSTS6"
|
||||
initial_timeout="$OMR_TRACKER_TIMEOUT"
|
||||
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
||||
|
||||
|
@ -59,10 +64,15 @@ _update_rto() {
|
|||
|
||||
_restart() {
|
||||
OMR_TRACKER_HOST="${OMR_TRACKER_HOSTS%% *}"
|
||||
OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}"
|
||||
[ "$OMR_TRACKER_HOST" = "$OMR_TRACKER_HOSTS" ] || {
|
||||
OMR_TRACKER_HOSTS="${OMR_TRACKER_HOSTS#* } $OMR_TRACKER_HOST"
|
||||
_init_rto
|
||||
}
|
||||
[ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || {
|
||||
OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6"
|
||||
_init_rto
|
||||
}
|
||||
}
|
||||
|
||||
_post_tracking() {
|
||||
|
@ -170,12 +180,14 @@ OMR_TRACKER_PREV_STATUS=""
|
|||
while true; do
|
||||
# setup tracker variables
|
||||
OMR_TRACKER_DEVICE_IP=
|
||||
OMR_TRACKER_DEVICE_IP6=
|
||||
OMR_TRACKER_STATUS="ERROR"
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_LATENCY=
|
||||
#OMR_TRACKER_TIMEOUT=$((rto / 1000 + (rto % 1000 ? 1 : 0)))
|
||||
OMR_TRACKER_LIST_HOSTS=""
|
||||
OMR_TRACKER_DEVICE_GATEWAY=
|
||||
OMR_TRACKER_DEVICE_GATEWAY6=
|
||||
serverip_ping=false
|
||||
|
||||
if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
||||
|
@ -185,6 +197,10 @@ while true; do
|
|||
if [ -z "$OMR_TRACKER_DEVICE_IP" ]; then
|
||||
OMR_TRACKER_DEVICE_IP=$(ip -4 addr show dev "$OMR_TRACKER_DEVICE" | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1)
|
||||
fi
|
||||
#OMR_TRACKER_DEVICE_IP6=$(ip -6 -br addr ls dev "$OMR_TRACKER_DEVICE" | awk -F'[ /]+' '{print $3}')
|
||||
#if [ -z "$OMR_TRACKER_DEVICE_IP6" ]; then
|
||||
OMR_TRACKER_DEVICE_IP6=$(ip -6 addr show dev "$OMR_TRACKER_DEVICE" | grep -v 'inet6 f' | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1)
|
||||
#fi
|
||||
#OMR_TRACKER_DEVICE_IP=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
||||
#if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||
# OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep -v default | awk '/proto static/ {print $1}' | tr -d "\n")
|
||||
|
@ -219,6 +235,15 @@ while true; do
|
|||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||
OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep kernel | awk '/proto kernel/ {print $1}' | tr -d "\n")
|
||||
fi
|
||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
|
||||
OMR_TRACKER_DEVICE_GATEWAY6=$(uci -q get "network.$OMR_TRACKER_INTERFACE.ip6gw")
|
||||
fi
|
||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then
|
||||
OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.${OMR_TRACKER_INTERFACE} status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${OMR_TRACKER_DEVICE_IP6}\"].nexthop" | tr -d "\n")
|
||||
fi
|
||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then
|
||||
OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
|
||||
fi
|
||||
|
||||
# execute specific tracker
|
||||
if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||
|
@ -304,6 +329,89 @@ while true; do
|
|||
sleep "$OMR_TRACKER_INTERVAL_TRIES"
|
||||
done
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
|
||||
# setup loop variable
|
||||
tries="$OMR_TRACKER_TRIES"
|
||||
# loop until tries attempts have been reached
|
||||
while [ "$tries" -gt 0 ]; do
|
||||
#if [ -n "$OMR_TRACKER_DEVICE_ROUTE" ]; then
|
||||
# _ping "$OMR_TRACKER_DEVICE_ROUTE" "$OMR_TRACKER_DEVICE" "no"
|
||||
# status=$?
|
||||
#else
|
||||
_ping "$OMR_TRACKER_DEVICE_GATEWAY6" "$OMR_TRACKER_DEVICE" "no"
|
||||
status=$?
|
||||
#fi
|
||||
if $(exit $status) && [ "$OMR_TRACKER_TYPE" = "none" ]; then
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
break
|
||||
elif [ "$OMR_TRACKER_TYPE" != "none" ]; then
|
||||
if ! $(exit $status); then
|
||||
OMR_TRACKER_STATUS_MSG="gateway6 down"
|
||||
fi
|
||||
serverip_ping=false
|
||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
||||
config_load openmptcprouter
|
||||
config_foreach _ping_server server $OMR_TRACKER_DEVICE
|
||||
fi
|
||||
if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST6" ]; then
|
||||
OMR_TRACKER_HOST6=$(resolveip -6 -t 5 $OMR_TRACKER_HOST6 | head -n 1 | tr -d "\n")
|
||||
if [ -n "$OMR_TRACKER_HOST6" ]; then
|
||||
if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; then
|
||||
# Check if route is not used
|
||||
while ! ip -6 route add $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6 > /dev/null 2>&1
|
||||
do
|
||||
logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6. waiting..."
|
||||
sleep 2
|
||||
ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1
|
||||
_restart
|
||||
done
|
||||
fi
|
||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
||||
_ping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE" "yes"
|
||||
statusb=$?
|
||||
elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then
|
||||
_httping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||
statusb=$?
|
||||
elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then
|
||||
_dns "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||
statusb=$?
|
||||
fi
|
||||
ip route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1
|
||||
if $(exit $statusb); then
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
break
|
||||
else
|
||||
if [ "$OMR_TRACKER_LIST_HOSTS6" = "" ]; then
|
||||
OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_HOST6"
|
||||
else
|
||||
OMR_TRACKER_LIST_HOSTS6="$OMR_TRACKER_LIST_HOSTS6,$OMR_TRACKER_HOST6"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
break
|
||||
fi
|
||||
else
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
break
|
||||
fi
|
||||
elif ! $(exit $status); then
|
||||
OMR_TRACKER_STATUS_MSG="gateway down"
|
||||
fi
|
||||
tries=$((tries - 1))
|
||||
#_restart
|
||||
OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}"
|
||||
[ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || {
|
||||
OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6"
|
||||
}
|
||||
#OMR_TRACKER_TIMEOUT=$((OMR_TRACKER_TIMEOUT * 2))
|
||||
sleep "$OMR_TRACKER_INTERVAL_TRIES"
|
||||
done
|
||||
fi
|
||||
else
|
||||
OMR_TRACKER_STATUS_MSG="link down"
|
||||
fi
|
||||
|
@ -316,6 +424,13 @@ while true; do
|
|||
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS)"
|
||||
fi
|
||||
fi
|
||||
if [ "$OMR_TRACKER_LIST_HOSTS6" != "" ]; then
|
||||
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
|
||||
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)"
|
||||
else
|
||||
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)"
|
||||
fi
|
||||
fi
|
||||
|
||||
#[ "$OMR_TRACKER_HOSTS" = "$initial_hosts" ] || [ "$OMR_TRACKER_STATUS" = "OK" ] && _post_tracking
|
||||
#[ "$OMR_TRACKER_STATUS" = "ERROR" ] && _restart
|
||||
|
|
|
@ -14,7 +14,7 @@ _ping_server() {
|
|||
-w "$OMR_TRACKER_TIMEOUT" \
|
||||
-c 1 \
|
||||
-q \
|
||||
"${host}"
|
||||
"${host}" 2>/dev/null
|
||||
) && echo "$ret" | grep -sq " 0% packet loss" && {
|
||||
server_ping=true
|
||||
}
|
||||
|
|
|
@ -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_${server})" = "" ] && {
|
||||
_log "Shadowsocks is up (can contact via http ${host})"
|
||||
uci -q set openmptcprouter.omr.shadowsocks="up"
|
||||
uci -q set openmptcprouter.omr.ss_${server}="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_${server}="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
|
||||
|
|
|
@ -11,12 +11,15 @@
|
|||
USE_PROCD=1
|
||||
}
|
||||
|
||||
. /usr/lib/unbound/iptools.sh
|
||||
|
||||
_validate_section() {
|
||||
local tmp_hosts=$hosts tmp_timeout=$timeout tmp_tries=$tries
|
||||
local tmp_hosts=$hosts tmp_hosts6=$hosts6 tmp_timeout=$timeout tmp_tries=$tries
|
||||
local tmp_interval=$interval tmp_interval_tries=$interval_tries tmp_options=$options tmp_type=$type tmp_enabled=$enabled tmp_wait_test=$wait_test
|
||||
|
||||
uci_validate_section omr-tracker "$1" "$2" \
|
||||
'hosts:list(host)' \
|
||||
'hosts6:list(host6)' \
|
||||
'timeout:uinteger' \
|
||||
'tries:uinteger' \
|
||||
'interval:uinteger' \
|
||||
|
@ -27,6 +30,7 @@ _validate_section() {
|
|||
'options:string'
|
||||
|
||||
[ -z "$hosts" ] && hosts=$tmp_hosts
|
||||
[ -z "$hosts6" ] && hosts6=$tmp_hosts6
|
||||
[ -z "$timeout" ] && timeout=$tmp_timeout
|
||||
[ -z "$tries" ] && tries=$tmp_tries
|
||||
[ -z "$interval" ] && interval=$tmp_interval
|
||||
|
@ -42,7 +46,7 @@ _launch_tracker() {
|
|||
loopback|lan*|if0*) return;;
|
||||
esac
|
||||
|
||||
local hosts timeout tries interval interval_tries options type enabled wait_test
|
||||
local hosts hosts6 timeout tries interval interval_tries options type enabled wait_test
|
||||
_validate_section "defaults" "defaults"
|
||||
_validate_section "interface" "$1"
|
||||
|
||||
|
@ -65,6 +69,7 @@ _launch_tracker() {
|
|||
# shellcheck disable=SC2086
|
||||
procd_set_param command /bin/omr-tracker "$1" $options
|
||||
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
|
||||
procd_append_param env "OMR_TRACKER_HOSTS6=$hosts6"
|
||||
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
|
||||
procd_append_param env "OMR_TRACKER_TRIES=$tries"
|
||||
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
|
||||
|
@ -127,48 +132,45 @@ _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
|
||||
|
||||
[ -n "$(echo $server | grep sss)" ] || return
|
||||
|
||||
#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"
|
||||
|
||||
|
@ -189,6 +191,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
|
||||
|
@ -230,7 +233,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