1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-15 03:51:51 +00:00
openmptcprouter-feeds/omr-tracker/files/etc/init.d/omr-tracker

143 lines
4.1 KiB
Text
Raw Normal View History

2018-01-23 14:38:27 +00:00
#!/bin/sh /etc/rc.common
# shellcheck disable=SC2039
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
# shellcheck disable=SC2034
{
START=90
STOP=10
USE_PROCD=1
}
_validate_section() {
local tmp_hosts=$hosts tmp_timeout=$timeout tmp_tries=$tries
2018-03-30 09:12:14 +00:00
local tmp_interval=$interval tmp_options=$options tmp_type=$type tmp_enabled=$enabled
2018-01-23 14:38:27 +00:00
uci_validate_section omr-tracker "$1" "$2" \
'hosts:list(host)' \
'timeout:uinteger' \
'tries:uinteger' \
2018-01-23 14:38:27 +00:00
'interval:uinteger' \
2018-05-09 09:15:43 +00:00
'type:string:ping' \
2018-03-30 09:12:14 +00:00
'enabled:bool:1' \
2018-01-23 14:38:27 +00:00
'options:string'
[ -z "$hosts" ] && hosts=$tmp_hosts
[ -z "$timeout" ] && timeout=$tmp_timeout
[ -z "$tries" ] && tries=$tmp_tries
[ -z "$interval" ] && interval=$tmp_interval
[ -z "$options" ] && options=$tmp_options
2018-03-01 15:03:05 +00:00
[ -z "$type" ] && type=$tmp_type
2018-03-30 09:12:14 +00:00
[ -z "$enabled" ] && enabled=$tmp_enabled
2018-01-23 14:38:27 +00:00
}
_launch_tracker() {
case "$1" in
loopback|lan*|if0*) return;;
2018-01-23 14:38:27 +00:00
esac
2018-05-09 09:15:43 +00:00
local hosts timeout tries interval options type enabled
2018-01-23 14:38:27 +00:00
_validate_section "defaults" "defaults"
_validate_section "interface" "$1"
local ifname ip4table
config_get ifname "$1" ifname
2018-01-23 14:38:27 +00:00
config_get multipath "$1" multipath
2018-02-20 21:19:31 +00:00
config_get gateway "$1" gateway
2018-01-23 14:38:27 +00:00
2018-06-06 11:25:32 +00:00
[ -z "$ifname" ] || [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "glorytun" ] && [ "$1" != "omrvpn" ] && return
2018-05-25 20:00:24 +00:00
[ "${enabled}" = "0" ] && return
2018-01-23 14:38:27 +00:00
procd_open_instance
# 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_TIMEOUT=$timeout"
procd_append_param env "OMR_TRACKER_TRIES=$tries"
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
procd_append_param env "OMR_TRACKER_TABLE=$ip4table"
procd_append_param env "OMR_TRACKER_DEVICE=$ifname"
2018-02-20 21:19:31 +00:00
procd_append_param env "OMR_TRACKER_DEVICE_GATEWAY=$gateway"
2018-03-01 15:03:05 +00:00
procd_append_param env "OMR_TRACKER_TYPE=$type"
2018-03-27 08:35:03 +00:00
procd_set_param limits nofile="51200 51200"
2018-01-23 14:38:27 +00:00
procd_set_param respawn 0 10 0
procd_set_param stderr 1
procd_close_instance
}
2018-05-09 09:15:43 +00:00
_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
2018-05-09 09:53:45 +00:00
_validate_section "shadowsocks" "shadowsocks"
2018-05-09 09:15:43 +00:00
config_get local_port "$1" local_port
local disabled
config_get disabled "$1" disabled 0
2018-05-25 20:00:24 +00:00
[ "$enabled" = "0" ] && return
[ "$disabled" = "1" ] && return
2018-05-09 09:15:43 +00:00
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
}
2018-01-23 14:38:27 +00:00
start_service() {
2018-05-09 09:15:43 +00:00
config_load shadowsocks-libev
_initialize_shadowsocks_tracker
2018-01-23 14:38:27 +00:00
config_load network
config_foreach _launch_tracker interface
2018-05-09 09:15:43 +00:00
config_load shadowsocks-libev
config_foreach _launch_shadowsocks_tracker ss_local
2018-01-23 14:38:27 +00:00
}
service_triggers() {
procd_add_reload_trigger omr-tracker network
}
reload_service() {
stop
start
}