1
0
Fork 0
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:
suyuan 2021-01-25 21:58:10 +08:00
commit c782a5d552
35 changed files with 2070 additions and 438 deletions

View file

@ -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

View file

@ -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
}

View file

@ -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
}
}

View file

@ -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

View file

@ -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