From 47a117defa46450b46d7a683d6e9d0029c8f9be0 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 5 Nov 2020 10:21:14 +0100 Subject: [PATCH] Add wait after test error in omr-tracker --- omr-tracker/files/bin/omr-tracker | 2 + omr-tracker/files/bin/omr-tracker-server | 64 ++++++++++--------- omr-tracker/files/bin/omr-tracker-ss | 2 + omr-tracker/files/bin/omr-tracker-v2ray | 2 + omr-tracker/files/etc/config/omr-tracker | 3 + omr-tracker/files/etc/init.d/omr-tracker | 16 +++-- .../files/etc/uci-defaults/omr-tracker | 11 ++++ 7 files changed, 65 insertions(+), 35 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index 4e963633d..b0a90246d 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -24,6 +24,7 @@ export OMR_TRACKER_DEVICE_GATEWAY dscp=56 # set DSCP CS7 (56) in outgoing packets initial_hosts="$OMR_TRACKER_HOSTS" initial_timeout="$OMR_TRACKER_TIMEOUT" +wait_test=${OMR_TRACKER_WAIT_TEST:-0} # set constants for rto updating # we've changed the default values of the RFC to K=3 and beta=0.25 instead of K=4 and beta=0.125 @@ -315,6 +316,7 @@ while true; do #[ "$OMR_TRACKER_STATUS" = "ERROR" ] && _restart #[ "$OMR_TRACKER_STATUS" != "$OMR_TRACKER_PREV_STATUS" ] && _post_tracking _post_tracking + [ "$OMR_TRACKER_STATUS" = "ERROR" ] && sleep $wait_test OMR_TRACKER_PREV_STATUS="$OMR_TRACKER_STATUS" _restart diff --git a/omr-tracker/files/bin/omr-tracker-server b/omr-tracker/files/bin/omr-tracker-server index a7f5c0af6..7b652c26d 100755 --- a/omr-tracker/files/bin/omr-tracker-server +++ b/omr-tracker/files/bin/omr-tracker-server @@ -42,7 +42,8 @@ _check_master() { config_get master $1 master config_get ip $1 ip config_get port $1 port "65500" - [ "$master" = "1" ] && [ -n "$ip" ] && { + 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" ] && { @@ -81,37 +82,39 @@ _check_backup() { config_get backup $1 backup config_get ip $1 ip config_get port $1 port - [ "$backup" = "1" ] && [ -n "$ip" ] && { + 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" "User 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/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 - break + [ "$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" "User 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/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 + } } } @@ -121,6 +124,7 @@ timeout=${OMR_TRACKER_TIMEOUT:-5} interval=${OMR_TRACKER_INTERVAL:-10} intervaltries=${OMR_TRACKER_INTERVAL_TRIES:-2} retry=${OMR_TRACKER_TRIES:-4} +waittest=${OMR_TRACKER_WAIT_TEST:-0} while true; do server_ping=false diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index f5011ca46..33405601b 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -44,6 +44,7 @@ interval=${OMR_TRACKER_INTERVAL:-10} 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} nodns=0 @@ -88,6 +89,7 @@ while true; do if [ "$server_ping" = false ]; then _log "Server ($server) seems down, no answer to ping" fi + sleep $wait_test fi } fi diff --git a/omr-tracker/files/bin/omr-tracker-v2ray b/omr-tracker/files/bin/omr-tracker-v2ray index d8c275b24..b7456c23c 100755 --- a/omr-tracker/files/bin/omr-tracker-v2ray +++ b/omr-tracker/files/bin/omr-tracker-v2ray @@ -44,6 +44,7 @@ interval=${OMR_TRACKER_INTERVAL:-10} 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} nodns=0 @@ -88,6 +89,7 @@ while true; do if [ "$server_ping" = false ]; then _log "Server ($server) seems down, no answer to ping" fi + sleep $wait_test fi } fi diff --git a/omr-tracker/files/etc/config/omr-tracker b/omr-tracker/files/etc/config/omr-tracker index cc0aed0cc..bf64d41d1 100644 --- a/omr-tracker/files/etc/config/omr-tracker +++ b/omr-tracker/files/etc/config/omr-tracker @@ -16,6 +16,7 @@ config defaults 'defaults' option interval '2' option interval_tries '1' option type 'ping' + option wait_test '0' option options '' config proxy 'proxy' @@ -30,6 +31,7 @@ config proxy 'proxy' list hosts '176.103.130.130' option timeout '10' option tries '3' + option wait_test '0' option interval_tries '1' option interval '5' @@ -37,4 +39,5 @@ config server 'server' option enabled '1' option tries '3' option timeout '10' + option wait_test '0' option interval '5' \ No newline at end of file diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index 6c24cd762..5d470808b 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -13,7 +13,7 @@ _validate_section() { local tmp_hosts=$hosts tmp_timeout=$timeout tmp_tries=$tries - local tmp_interval=$interval tmp_interval_tries=$interval_tries tmp_options=$options tmp_type=$type tmp_enabled=$enabled + 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)' \ @@ -21,6 +21,7 @@ _validate_section() { 'tries:uinteger' \ 'interval:uinteger' \ 'interval_tries:uinteger' \ + 'wait_test:uinteger' \ 'type:string:undef' \ 'enabled:bool:1' \ 'options:string' @@ -30,6 +31,7 @@ _validate_section() { [ -z "$tries" ] && tries=$tmp_tries [ -z "$interval" ] && interval=$tmp_interval [ -z "$interval_tries" ] && interval_tries=$tmp_interval_tries + [ -z "$wait_test" ] && wait_test=$tmp_wait_test [ -z "$options" ] && options=$tmp_options [ "$type" = "undef" ] && type=${tmp_type:-ping} [ -z "$enabled" ] && enabled=$tmp_enabled @@ -40,7 +42,7 @@ _launch_tracker() { loopback|lan*|if0*) return;; esac - local hosts timeout tries interval interval_tries options type enabled + local hosts timeout tries interval interval_tries options type enabled wait_test _validate_section "defaults" "defaults" _validate_section "interface" "$1" @@ -71,6 +73,7 @@ _launch_tracker() { procd_append_param env "OMR_TRACKER_DEVICE=$ifname" procd_append_param env "OMR_TRACKER_DEVICE_GATEWAY=$gateway" procd_append_param env "OMR_TRACKER_TYPE=$type" + procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" procd_set_param limits nofile="51200 51200" procd_set_param respawn 0 10 0 procd_set_param stderr 1 @@ -78,7 +81,7 @@ _launch_tracker() { } _launch_server_tracker() { - local hosts timeout tries interval interval_tries options type enabled + local hosts timeout tries interval interval_tries options type enabled wait_test _validate_section "defaults" "defaults" _validate_section "server" "server" @@ -92,6 +95,7 @@ _launch_server_tracker() { procd_append_param env "OMR_TRACKER_TRIES=$tries" procd_append_param env "OMR_TRACKER_INTERVAL=$interval" procd_append_param env "OMR_TRACKER_INTERVAL_TRIES=$interval_tries" + procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" procd_set_param limits nofile="51200 51200" procd_set_param respawn 0 10 0 procd_set_param stderr 1 @@ -139,7 +143,7 @@ _initialize_shadowsocks_tracker() { } _launch_shadowsocks_tracker() { - local hosts timeout tries interval local_port enabled server + local hosts timeout tries interval local_port enabled server wait_test [ "$1" = "tracker" ] || return @@ -161,6 +165,7 @@ _launch_shadowsocks_tracker() { procd_append_param env "OMR_TRACKER_TRIES=$tries" 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_set_param limits nofile="51200 51200" procd_set_param respawn 0 10 0 procd_set_param stderr 1 @@ -168,7 +173,7 @@ _launch_shadowsocks_tracker() { } _launch_v2ray_tracker() { - local hosts timeout tries interval local_port enabled server + local hosts timeout tries interval local_port enabled server wait_test _validate_section "proxy" "proxy" [ "$enabled" = "0" ] || [ -z "$hosts" ] && return @@ -181,6 +186,7 @@ _launch_v2ray_tracker() { procd_append_param env "OMR_TRACKER_TRIES=$tries" procd_append_param env "OMR_TRACKER_INTERVAL=$interval" procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:1111" + procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" procd_set_param limits nofile="51200 51200" procd_set_param respawn 0 10 0 procd_set_param stderr 1 diff --git a/omr-tracker/files/etc/uci-defaults/omr-tracker b/omr-tracker/files/etc/uci-defaults/omr-tracker index 3bbab839e..30aec42b9 100755 --- a/omr-tracker/files/etc/uci-defaults/omr-tracker +++ b/omr-tracker/files/etc/uci-defaults/omr-tracker @@ -47,6 +47,7 @@ if [ "$(uci -q get omr-tracker.proxy.hosts | grep '23.96.52.53')" != "" ]; then add_list omr-tracker.proxy.hosts='104.16.1.1' add_list omr-tracker.proxy.hosts='198.27.92.1' add_list omr-tracker.proxy.hosts='151.101.129.164' + commit omr-tracker EOF fi if [ "$(uci -q get omr-tracker.proxy.hosts | grep '103.224.182.242')" != "" ]; then @@ -55,6 +56,16 @@ if [ "$(uci -q get omr-tracker.proxy.hosts | grep '103.224.182.242')" != "" ]; t del_list omr-tracker.proxy.hosts='198.191.250.176' add_list omr-tracker.proxy.hosts='74.82.42.42' add_list omr-tracker.proxy.hosts='176.103.130.130' + commit omr-tracker + EOF +fi + +if [ "$(uci -q get omr-tracker.defaults.wait_test)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set omr-tracker.defaults.wait_test=1 + set omr-tracker.proxy.wait_test=1 + set omr-tracker.server.wait_test=1 + commit omr-tracker EOF fi