small-package/luci-app-bypass/root/usr/share/bypass/by-monitor

111 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
NAME=bypass
uci_get_by_name(){
ret=$(uci -q get $NAME.$1.$2)
echo ${ret:=$3}
}
uci_get_by_type(){
ret=$(uci -q get $NAME.@$1[0].$2)
echo ${ret:=$3}
}
redir_tcp=$1
kcp=$2
redir_udp=$3
redir_nf=$4
smartdns=$5
chinadns=$6
socks5=$7
server_count=$8
server=`cat /tmp/etc/$NAME.include | grep '\-A SS_SPEC_WAN_AC \-d' | grep RETURN | awk '{print$4}' | sed 's/\/.*//'`
GLOBAL_SERVER=$(uci_get_by_type global global_server)
kcp_port=$(uci_get_by_name $GLOBAL_SERVER kcp_port)
server_port=$(uci_get_by_name $GLOBAL_SERVER server_port)
password=$(uci_get_by_name $GLOBAL_SERVER kcp_password)
kcp_param=$(uci_get_by_name $GLOBAL_SERVER kcp_param)
gfw_mode=$(uci_get_by_type global gfw_mode 0)
LOG=/var/log/bypass.log
[ "$password" != "" ] && password="--key "${password}
echolog() {
local d="$(date "+%Y-%m-%d %H:%M:%S")"
echo -e "$d: $*" >>$LOG
}
while :;do
sleep 30
#redir tcp
if [ $redir_tcp -gt 0 ];then
t=`ps -w | grep by-retcp | grep -v grep | wc -l`
if [ $t -lt $redir_tcp ];then
echolog "Redir TCP Error. Restart!"
/etc/init.d/bypass restart
exit 0
fi
fi
#kcptun
if [ $kcp = 1 ];then
t=`ps -w | grep kcptun-client | grep -v grep | wc -l`
if [ $t = 0 ];then
echolog "SSR KCPTUN Error. Restart!"
killall -q -9 kcptun-client
$(which kcptun-client) -r $server:$kcp_port -l :$server_port $password $kcp_param &
fi
fi
#redir udp
if [ $redir_udp = 1 ];then
t=`ps -w | grep by-reudp | grep -v grep | wc -l`
if [ $t = 0 ];then
echolog "Redir UDP Error. Restart!"
/etc/init.d/bypass restart
exit 0
fi
fi
#redir netflix
if [ $redir_nf = 1 ];then
t=`ps -w | grep by-nf | grep -v grep | wc -l`
if [ $t = 0 ];then
echolog "Redir Netflix Error. Restart!"
/etc/init.d/bypass restart
exit 0
fi
fi
#smartdns
if [ $smartdns = 1 ];then
t=`ps -w | grep smartdns | grep -v grep | wc -l`
if [ $t = 0 ];then
echolog "SmartDNS Error. Restart!"
killall -q -9 smartdns
$(which smartdns) -c /var/etc/smartdns/smartdns.conf
fi
fi
#chinadns-ng
if [ $chinadns = 1 ];then
t=`ps -w | grep chinadns-ng | grep -v grep | wc -l`
if [ $t = 0 ];then
echolog "ChinaDNS-NG Error. Restart!"
$(which chinadns-ng) -l 5337 -c '127.0.0.1#5336' -t '127.0.0.1#5335' -4 china_v4 -6 china_v6 -f -n $([ $gfw_mode = 1 ] && echo -g /tmp/bypass/gfw.list) >/dev/null 2>&1 &
fi
fi
#localsocks
if [ $socks5 = 1 ];then
t=`ps -w | grep by-socks | grep -v grep | wc -l`
if [ $t = 0 ];then
echolog "Global Socks Server Error. Restart!"
/etc/init.d/bypass restart
exit 0
fi
fi
#server
if [ $server_count -gt 0 ];then
t=`ps -w | grep by-server | grep -v grep | wc -l`
if [ $t -lt $server_count ];then
echolog "SSR Server Error. Restart!"
/etc/init.d/bypass restart
exit 0
fi
fi
done