1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

Track is shadowsocks is up or not

This commit is contained in:
Ycarus 2018-05-09 11:15:43 +02:00
parent 0e22cbd6b2
commit 0387798d74
6 changed files with 146 additions and 12 deletions

View file

@ -18,7 +18,7 @@ _validate_section() {
'timeout:uinteger' \
'tries:uinteger' \
'interval:uinteger' \
'type:string' \
'type:string:ping' \
'enabled:bool:1' \
'options:string'
@ -36,10 +36,7 @@ _launch_tracker() {
loopback|lan*|if0*|tun*) return;;
esac
local interface_type
config_get interface_type "$1" type
local hosts timeout tries interval options type
local hosts timeout tries interval options type enabled
_validate_section "defaults" "defaults"
_validate_section "interface" "$1"
@ -50,7 +47,6 @@ _launch_tracker() {
[ -z "$ifname" ] || [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "glorytun" ] && return
[ $enabled = 0 ] && return
[ -z "$type" ] && type="ping"
procd_open_instance
# shellcheck disable=SC2086
@ -69,9 +65,70 @@ _launch_tracker() {
procd_close_instance
}
_initialize_shadowsocks_tracker() {
local redir_tcp server tracker_server
config_get redir_tcp ss_rules redir_tcp
config_get server $redir_tcp server
config_get tracker_server "tracker" server
[ "$server" = "$tracker_server" ] || {
[ -z "$tracker_server" ] && {
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=60
set shadowsocks-libev.tracker.fast_open=1
set shadowsocks-libev.tracker.reuse_port=1
set shadowsocks-libev.tracker.mptcp=1
set shadowsocks-libev.tracker.verbose=0
commit shadowsocks-libev
EOF
} || {
uci -q set shadowsocks-libev.tracker.server=$server
}
/etc/init.d/shadowsocks-libev restart
}
}
_launch_shadowsocks_tracker() {
local hosts timeout tries interval local_port enabled
[ "$1" = "tracker" ] || return
_validate_section "defaults" "shadowsocks"
config_get local_port "$1" local_port
local disabled
config_get disabled "$1" disabled 0
[ $enabled = 0 ] && return
[ $disabled = 1 ] && return
procd_open_instance
# shellcheck disable=SC2086
procd_set_param command /bin/omr-tracker-ss "$1"
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
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_set_param limits nofile="51200 51200"
procd_set_param respawn 0 10 0
procd_set_param stderr 1
procd_close_instance
}
start_service() {
config_load shadowsocks-libev
_initialize_shadowsocks_tracker
config_load network
config_foreach _launch_tracker interface
config_load shadowsocks-libev
config_foreach _launch_shadowsocks_tracker ss_local
}
service_triggers() {