1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-13 02:51:50 +00:00

Fix check of ShadowSocks rules

This commit is contained in:
Ycarus 2018-10-13 21:40:15 +02:00
parent 7159fde4a9
commit 5e435e3194
3 changed files with 20 additions and 13 deletions

View file

@ -163,7 +163,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then
if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi2.mode)" = "tcp_and_udp" ]; then
_log "Tunnel down use ShadowSocks for UDP"
uci -q set shadowsocks-libev.ss_rules.redir_udp='hi2'
if /etc/init.d/shadowsocks-libev rules_status ; then
if /etc/init.d/shadowsocks-libev rules_exist ; then
/etc/init.d/shadowsocks-libev rules_down
/etc/init.d/shadowsocks-libev rules_up
/etc/init.d/omr-bypass reload >/dev/null 2>&1
@ -181,7 +181,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om
if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi2" ]; then
_log "Tunnel up disable use of ShadowSocks for UDP"
uci -q delete shadowsocks-libev.ss_rules.redir_udp
if /etc/init.d/shadowsocks-libev rules_status ; then
if /etc/init.d/shadowsocks-libev rules_exist ; then
/etc/init.d/shadowsocks-libev rules_down
/etc/init.d/shadowsocks-libev rules_up
/etc/init.d/omr-bypass reload >/dev/null 2>&1

View file

@ -37,19 +37,24 @@ while true; do
[ "${last}" -ge "${retry}" ] && {
log "Shadowsocks is up (can contact ${host})"
uci -q set openmptcprouter.vps.shadowsocks="up"
get_ip
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
[ "$(uci -q get openmptcprouter.vps.ipv4)" = "" ] || ([ "$(sysctl -n net.ipv6.conf.all.disable_ipv6 | tr -d '\n')" = "0" ] && [ "$(uci -q get openmptcprouter.vps.ipv6)" = "" ]) && get_ip
/etc/init.d/omr-bypass reload 2> /dev/null
}
if ! /etc/init.d/shadowsocks-libev rules_exist ; then
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
/etc/init.d/omr-bypass reload 2> /dev/null
get_ip
fi
[ "$(uci -q get openmptcprouter.vps.ipv4)" = "" ] || ([ "$(sysctl -n net.ipv6.conf.all.disable_ipv6 | tr -d '\n')" = "0" ] && [ "$(uci -q get openmptcprouter.vps.ipv6)" = "" ]) && get_ip
last=0
else
last=$((last + 1 ))
[ "${last}" -eq "${retry}" ] && {
log "Shadowsocks is down (can't contact ${host})"
uci -q set openmptcprouter.vps.shadowsocks="down"
/etc/init.d/shadowsocks-libev rules_down 2> /dev/null
/etc/init.d/omr-bypass reload 2> /dev/null
if /etc/init.d/shadowsocks-libev rules_exist ; then
/etc/init.d/shadowsocks-libev rules_down 2> /dev/null
/etc/init.d/omr-bypass reload 2> /dev/null
get_ip
fi
}
fi
sleep "${interval}"

View file

@ -326,13 +326,14 @@ reload_service() {
start
}
rules_status() {
[ -n "$(iptables -t nat -L | grep ss_rules_forward)" ] && return 1
return 0
rules_exist() {
[ -n "$(iptables -t nat -L | grep ss_rules_forward)" ] && return 0
return 1
}
rules_up() {
rules_status || return 0
rules_exist && return 0
logger -t "Shadowsocks" "Rules UP"
config_load shadowsocks-libev
for cfgtype in ss_redir; do
config_foreach ss_rules_restart "$cfgtype" "$cfgtype"
@ -342,7 +343,8 @@ rules_up() {
}
rules_down() {
rules_status && return 0
rules_exist || return 0
logger -t "Shadowsocks" "Rules DOWN"
local bin="$ss_bindir/ss-rules"
[ -x "$bin" ] && "$bin" -f
local bin6="$ss_bindir/ss-rules6"