From 070ab35840f0d216f7c869c6f86fd2d45975ea42 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Wed, 26 Feb 2020 15:52:16 +0800 Subject: [PATCH] luci-app-clash: bump to 1.5.8 --- .../luci-app-clash/root/etc/init.d/clash | 52 ++++++++++--------- .../root/usr/share/clash/kill.sh | 33 ++++++++++++ .../clash/{clash-watchdog.sh => restore.sh} | 15 ------ 3 files changed, 60 insertions(+), 40 deletions(-) create mode 100755 package/ntlf9t/luci-app-clash/root/usr/share/clash/kill.sh rename package/ntlf9t/luci-app-clash/root/usr/share/clash/{clash-watchdog.sh => restore.sh} (78%) diff --git a/package/ntlf9t/luci-app-clash/root/etc/init.d/clash b/package/ntlf9t/luci-app-clash/root/etc/init.d/clash index 9c045ee67b..b9249d73ce 100644 --- a/package/ntlf9t/luci-app-clash/root/etc/init.d/clash +++ b/package/ntlf9t/luci-app-clash/root/etc/init.d/clash @@ -34,7 +34,7 @@ add_cron(){ config_type=$(uci get clash.config.config_type 2>/dev/null) #=========================================================================================================================== sed -i '/clash.txt/d' $CRON_FILE - + clear=$(uci get clash.config.auto_clear_log 2>/dev/null) if [ "${clear}" -eq 1 ]; then [ -z "$(grep -w "/usr/share/clash/clash.txt" $CRON_FILE)" ] && echo "0 */$(uci get clash.config.clear_time 2>/dev/null) * * * echo '' >/usr/share/clash/clash.txt" >> $CRON_FILE @@ -306,9 +306,12 @@ custom_list() { sh /usr/share/clash/list.sh >/dev/null 2>&1 } -watchdog() { - nohup /usr/share/clash/clash-watchdog.sh >/dev/null 2>&1 +restore() { + sh /usr/share/clash/restore.sh >/dev/null 2>&1 } + + + start(){ #=========================================================================================================================== lang=$(uci get luci.main.lang 2>/dev/null) @@ -424,7 +427,7 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" sleep 1 - ip_rules >/dev/null 2>&1 + ip_rules >/dev/null 2>&1 if [ "${core}" -eq 1 ];then nohup $CLASH -d "$CLASH_CONFIG" > /usr/share/clash/clash.txt 2>&1 & @@ -463,7 +466,7 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" fi ln -s /usr/share/clash/yacd /www/luci-static/yacd 2>/dev/null sleep 2 - + restore >/dev/null 2>&1 if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Setting Cron Job" >$REAL_LOG @@ -471,7 +474,7 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" elif [ "${lang}" == "zh_cn" ];then echo "设置Cron" >$REAL_LOG add_cron - + fi @@ -483,13 +486,13 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" echo "设置 Clash iptables" >$REAL_LOG fi - if [ "$(uci get firewall.@defaults[0].forward)" != "ACCEPT" ]; then + if [ "$(uci get firewall.@defaults[0].forward)" != "ACCEPT" ]; then uci set firewall.@defaults[0].forward=ACCEPT >/dev/null 2>&1 uci commit firewall >/dev/null 2>&1 /etc/init.d/firewall restart >/dev/null 2>&1 - fi + fi - sleep 2 + sleep 2 rules >/dev/null 2>&1 custom_list >/dev/null 2>&1 @@ -517,7 +520,8 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" sleep 2 echo "Clash for OpenWRT" >$REAL_LOG fi - watchdog >/dev/null 2>&1 + + nohup /usr/share/clash/kill.sh >/dev/null 2>&1 else if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo " $(date "+%Y-%m-%d %H:%M:%S") - problem with config.yaml, config.yaml is either empty or not found " >> /usr/share/clash/clash.txt @@ -636,21 +640,19 @@ stop(){ fake=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.0\/16/=' |sort -r) - for fake in $fake; do - iptables -t nat -D OUTPUT $fake >/dev/null 2>&1 - done + for fake in $fake; do + iptables -t nat -D OUTPUT $fake >/dev/null 2>&1 + done fake2=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.1\/16/=' |sort -r) - for fake2 in $fake2; do - iptables -t nat -D OUTPUT $fake2 >/dev/null 2>&1 - done + for fake2 in $fake2; do + iptables -t nat -D OUTPUT $fake2 >/dev/null 2>&1 + done remove_mark >/dev/null 2>&1 bash /usr/share/clash/backup.sh >/dev/null 2>&1 - kill -9 $(ps | grep clash-watchdog.sh | grep -v grep | awk '{print $1}') >/dev/null 2>&1 - if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Clash Core Stoped Successfully " >$REAL_LOG elif [ "${lang}" == "zh_cn" ];then @@ -660,7 +662,7 @@ stop(){ kill -9 `pidof clash|sed "s/$//g"` 2>/dev/null rm -rf /www/luci-static/yacd 2>/dev/null sleep 1 - + if [ ! -z "${delandns}" ];then if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Removing Custom lan dns server " >$REAL_LOG @@ -677,7 +679,7 @@ stop(){ fi del_cron >/dev/null 2>&1 - sleep 1 + sleep 1 if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Restarting Dnsmasq " >$REAL_LOG @@ -686,14 +688,12 @@ stop(){ fi revert_dns >/dev/null 2>&1 - sleep 1 + sleep 1 echo "" >/usr/share/clash/clash.txt >/dev/null 2>&1 echo "0" > /usr/share/clash/logstatus_check >/dev/null 2>&1 - - - + sh /usr/share/clash/kill.sh if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo " $(date "+%Y-%m-%d %H:%M:%S") - CLIENT IS DISABLED " >> /usr/share/clash/clash.txt echo "Client is Disabled " >$REAL_LOG @@ -704,7 +704,9 @@ stop(){ echo "客户端被禁用 " >$REAL_LOG sleep 2 echo "Clash for OpenWRT" >$REAL_LOG - fi + fi + + if pidof clash >/dev/null; then kill $(pidof clash) >/dev/null 2>&1 || kill -9 $(ps | grep clash | grep -v grep | awk '{print $1}') >/dev/null 2>&1 fi diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/kill.sh b/package/ntlf9t/luci-app-clash/root/usr/share/clash/kill.sh new file mode 100755 index 0000000000..85e41d442f --- /dev/null +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/kill.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +enable=$(uci get clash.config.enable 2>/dev/null) +if [ "${enable}" -eq 1 ];then + +while [ $enable -eq 1 ]; +do + if ! pidof clash>/dev/null; then + /etc/init.d/clash restart 2>&1 & + fi + +sleep 60 +continue +done + +elif [ "${enable}" -eq 0 ];then + +if [ -f /tmp/watchlist ];then +rm -rf /tmp/watchlist +fi +line=$(ps | grep -n '/usr/share/clash/kill.sh'|awk -F ':' '{print $2}' |awk -F ' ' '{print $1}'>/tmp/watchlist) +line_no=$(grep -n '' /tmp/watchlist|awk -F ':' '{print $1}') +num=$(grep -c '' /tmp/watchlist| awk '{print $1}') +nums=1 +while [[ $nums -le $num ]] +do + kill -9 $(sed -n "$nums"p /tmp/watchlist| awk '{print $1}') >/dev/null 2>&1 + nums=$(( $nums + 1)) +done +fi + + + diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash-watchdog.sh b/package/ntlf9t/luci-app-clash/root/usr/share/clash/restore.sh similarity index 78% rename from package/ntlf9t/luci-app-clash/root/usr/share/clash/clash-watchdog.sh rename to package/ntlf9t/luci-app-clash/root/usr/share/clash/restore.sh index 249bf647b9..970984f9c2 100755 --- a/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash-watchdog.sh +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/restore.sh @@ -1,8 +1,5 @@ #!/bin/sh /etc/rc.common -sleeptime=150 -enable=$(uci get clash.config.enable 2>/dev/null) - if [ -f /usr/share/clashbackup/history ];then HISTORY_PATH="/usr/share/clashbackup/history" @@ -22,15 +19,3 @@ do done >/dev/null 2>&1 fi - -while [ $enable -eq 1 ]; -do - if ! pidof clash>/dev/null; then - /etc/init.d/clash restart 2>&1 & - fi - -sleep ${sleeptime} -continue -done - -