diff --git a/package/jsda/luci-app-clash/Makefile b/package/jsda/luci-app-clash/Makefile index 2d793262e2..ee2e04e18b 100644 --- a/package/jsda/luci-app-clash/Makefile +++ b/package/jsda/luci-app-clash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-clash -PKG_VERSION:=1.5.3 +PKG_VERSION:=1.5.5 PKG_MAINTAINER:=frainzy1477 @@ -67,7 +67,7 @@ if [ -z "$${IPKG_INSTROOT}" ]; then rm -rf /usr/share/clash/web 2>/dev/null mv /usr/share/clash/config/sub/config.yaml /usr/share/clashbackup/config.bak1 2>/dev/null mv /usr/share/clash/config/upload/config.yaml /usr/share/clashbackup/config.bak2 2>/dev/null - mv /usr/share/clash/config/custom/config.yaml /usr/share/clashbackup/config.bak3 2>/dev/nul + mv /usr/share/clash/config/custom/config.yaml /usr/share/clashbackup/config.bak3 2>/dev/null fi exit 0 diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua index 1d6a47adc0..d36edb9ef4 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/import.lua @@ -61,7 +61,7 @@ o.inputtitle = translate("Download Config") o.inputstyle = "reload" o.write = function() kr.uci:commit("clash") - SYS.call("sh /usr/share/clash/clash.sh >>/tmp/clash.txt 2>&1 &") + SYS.call("sh /usr/share/clash/clash.sh >>/usr/share/clash/clash.txt 2>&1 &") SYS.call("sleep 1") HTTP.redirect(DISP.build_url("admin", "services", "clash")) end @@ -82,7 +82,7 @@ o.write = function() kr.uci:commit("clash") SYS.call("cp /etc/config/clash /usr/share/clash/v2ssr/config.bak 2>/dev/null") SYS.call("sleep 1") - luci.sys.call("bash /usr/share/clash/v2ssr.sh >>/tmp/clash.txt 2>&1 &") + luci.sys.call("bash /usr/share/clash/v2ssr.sh >>/usr/share/clash/clash.txt 2>&1 &") HTTP.redirect(DISP.build_url("admin", "services", "clash")) end o:depends("subcri", 'v2ssr2clash') @@ -138,4 +138,4 @@ if luci.http.formvalue("upload") then end -return kr,kk,ko \ No newline at end of file +return kr,kk,ko diff --git a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua index e9c0985877..da45f97ebc 100644 --- a/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua +++ b/package/jsda/luci-app-clash/luasrc/model/cbi/clash/log.lua @@ -22,7 +22,7 @@ o.inputtitle = translate("Download logs") o.inputstyle = "apply" o.write = function () local sPath, sFile, fd, block - sPath = "/tmp/clash.txt" + sPath = "/usr/share/clash/clash.txt" sFile = NXFS.basename(sPath) if fs.isdirectory(sPath) then fd = io.popen('txt -C "%s" -cz .' % {sPath}, "r") diff --git a/package/jsda/luci-app-clash/root/etc/init.d/clash b/package/jsda/luci-app-clash/root/etc/init.d/clash index d59fe404b5..e72fa45adf 100755 --- a/package/jsda/luci-app-clash/root/etc/init.d/clash +++ b/package/jsda/luci-app-clash/root/etc/init.d/clash @@ -12,7 +12,6 @@ CRON_FILE="/etc/crontabs/root" CONFIG_YAML="/etc/clash/config.yaml" CONFIG_YAML_PATH=$(uci get clash.config.use_config 2>/dev/null) - CUSLIST="/tmp/dnsmasq.d/custom_list.conf" CUSLITT="/tmp/dnsmasq.clash" CUSLISTV="/var/dnsmasq.d/custom_list.conf" @@ -275,30 +274,20 @@ rules(){ ip route replace default dev utun table "$PROXY_ROUTE_TABLE" fi - ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" - - iptables -t mangle -N clash - iptables -t mangle -F clash - iptables -t mangle -A clash -m owner --uid-owner "$PROXY_BYPASS_USER" -j RETURN - iptables -t mangle -A clash -d 198.18.0.0/16 -j MARK --set-mark "$PROXY_FWMARK" - iptables -t mangle -A clash -m set --match-set localnetwork dst -j RETURN - iptables -t mangle -A clash -j MARK --set-mark "$PROXY_FWMARK" - - - iptables -t nat -N CLASH_DNS - iptables -t nat -F CLASH_DNS - iptables -t nat -A CLASH_DNS -m owner --uid-owner "$PROXY_BYPASS_USER" -j RETURN - iptables -t nat -A CLASH_DNS -p udp -j DNAT --to "127.0.0.1:$dns_port" - - iptables -t mangle -I OUTPUT -j clash - iptables -t mangle -I PREROUTING -m set ! --match-set localnetwork dst -j MARK --set-mark "$PROXY_FWMARK" - - iptables -t nat -I OUTPUT -p udp --dport 53 -j CLASH_DNS - iptables -t nat -I PREROUTING -p udp --dport 53 -j DNAT --to "127.0.0.1:$dns_port" + ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" + + iptables -t mangle -N clash + iptables -t mangle -F clash + iptables -t mangle -A clash -d 198.18.0.0/16 -j MARK --set-mark "$PROXY_FWMARK" + iptables -t mangle -A clash -m set --match-set localnetwork dst -j RETURN + iptables -t mangle -I OUTPUT -j clash + iptables -t mangle -I PREROUTING -m set ! --match-set localnetwork dst -j MARK --set-mark "$PROXY_FWMARK" + if [ -f /usr/sbin/ip6tables ] && [ "${ipv6}" -eq 1 ]; then ip6tables -t mangle -I PREROUTING -j MARK --set-mark "$PROXY_FWMARK" fi + fi #=========================================================================================================================== } @@ -308,6 +297,9 @@ custom_list() { sh /usr/share/clash/list.sh >/dev/null 2>&1 } +watchdog() { + nohup /usr/share/clash/clash-watchdog.sh >/dev/null 2>&1 +} start(){ #=========================================================================================================================== lang=$(uci get luci.main.lang 2>/dev/null) @@ -456,8 +448,19 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" fi fi + + sleep 2 + + + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then + echo "Setting Cron Job" >$REAL_LOG + add_cron + elif [ "${lang}" == "zh_cn" ];then + echo "设置Cron" >$REAL_LOG + add_cron - sh /usr/share/clash/restore.sh >/dev/null 2>&1 + fi + sleep 1 @@ -467,19 +470,18 @@ 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 sleep 1 - if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Restarting Dnsmasq " >$REAL_LOG elif [ "${lang}" == "zh_cn" ];then @@ -488,29 +490,21 @@ if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" /etc/init.d/dnsmasq restart >/dev/null 2>&1 sleep 1 - - if pidof clash >/dev/null; then - add_cron + if [ "${lang}" == "en" ] || [ $lang == "auto" ];then - echo "Setting Cron Job" >$REAL_LOG - sleep 1 echo "Clash Started Successfully " >$REAL_LOG sleep 2 echo "Clash is Running " >$REAL_LOG sleep 2 echo "Clash for OpenWRT" >$REAL_LOG elif [ "${lang}" == "zh_cn" ];then - echo "设置Cron" >$REAL_LOG - sleep 1 echo "Clash 启动成功,请等待服务器上线!" >$REAL_LOG sleep 2 echo "Clash运行中" >$REAL_LOG sleep 2 echo "Clash for OpenWRT" >$REAL_LOG fi - nohup /usr/share/clash/clash-watchdog.sh >/dev/null 2>&1 - - fi + watchdog >/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 @@ -639,7 +633,7 @@ stop(){ remove_mark >/dev/null 2>&1 - sh /usr/share/clash/backup.sh >/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 diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/backup.sh b/package/jsda/luci-app-clash/root/usr/share/clash/backup.sh index ff5bd76787..f60ba93e25 100755 --- a/package/jsda/luci-app-clash/root/usr/share/clash/backup.sh +++ b/package/jsda/luci-app-clash/root/usr/share/clash/backup.sh @@ -1,4 +1,5 @@ -#!/bin/sh +#!/bin/bash /etc/rc.common +. /lib/functions.sh CURL_GROUP_CACHE="/usr/share/clashbackup/clash_gorup.json" CURL_NOW_CACHE="/usr/share/clashbackup/clash_now.json" diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh b/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh index 46a05c7463..c9ae2d8830 100755 --- a/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh +++ b/package/jsda/luci-app-clash/root/usr/share/clash/clash-watchdog.sh @@ -1,5 +1,5 @@ #!/bin/sh - + sleeptime=300 logfile="/tmp/clash.log" CLASH="/etc/clash/clash" @@ -17,6 +17,24 @@ clean_log(){ } + +if [ -f /usr/share/clashbackup/history ];then +HISTORY_PATH="/usr/share/clashbackup/history" +SECRET=$(uci get clash.config.dash_pass 2>/dev/null) +LAN_IP=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null) +PORT=$(uci get clash.config.dash_port 2>/dev/null) + +if [ ! -z "$(grep "#*#" "$HISTORY_PATH")" ]; then + cat $HISTORY_PATH |while read line + do + GORUP_NAME=$(echo $line |awk -F '#*#' '{print $1}') + NOW_NAME=$(echo $line |awk -F '#*#' '{print $3}') + curl -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X PUT -d '{"name":"'"$NOW_NAME"'"}' http://"$LAN_IP":"$PORT"/proxies/"$GORUP_NAME" >/dev/null 2>&1 + done +fi +fi + + while [ $enable -eq 1 ]; do curtime=`date "+%H:%M:%S"` diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/luci_version b/package/jsda/luci-app-clash/root/usr/share/clash/luci_version index 8af85beb51..9075be4951 100644 --- a/package/jsda/luci-app-clash/root/usr/share/clash/luci_version +++ b/package/jsda/luci-app-clash/root/usr/share/clash/luci_version @@ -1 +1 @@ -1.5.3 +1.5.5 diff --git a/package/jsda/luci-app-clash/root/usr/share/clash/restore.sh b/package/jsda/luci-app-clash/root/usr/share/clash/restore.sh deleted file mode 100755 index a630f03872..0000000000 --- a/package/jsda/luci-app-clash/root/usr/share/clash/restore.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -if [ -f /usr/share/clashbackup/history ];then -HISTORY_PATH="/usr/share/clashbackup/history" -SECRET=$(uci get clash.config.dash_pass 2>/dev/null) -LAN_IP=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null) -PORT=$(uci get clash.config.dash_port 2>/dev/null) - -if [ ! -z "$(grep "#*#" "$HISTORY_PATH")" ]; then - cat $HISTORY_PATH |while read line - do - GORUP_NAME=$(echo $line |awk -F '#*#' '{print $1}') - NOW_NAME=$(echo $line |awk -F '#*#' '{print $3}') - curl -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X PUT -d '{"name":"'"$NOW_NAME"'"}' http://"$LAN_IP":"$PORT"/proxies/"$GORUP_NAME" >/dev/null 2>&1 - done -fi -fi - -