From ac3ceb904dc2c325a9f4e8f8ca44b5337c7aa6ff Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Mon, 9 Mar 2020 03:58:24 +0800 Subject: [PATCH] OpenClash: sync with upstram source --- .../files/etc/init.d/openclash | 167 +++++++++++------- .../files/etc/openclash/ConnersHua.yaml | 5 + .../files/etc/openclash/default.yaml | 34 ++-- .../files/etc/openclash/lhie1.yaml | 62 ++++--- .../files/etc/openclash/openclash_version | 4 +- .../lua/luci/model/cbi/openclash/client.lua | 13 +- .../lua/luci/model/cbi/openclash/config.lua | 67 +++++-- .../usr/share/openclash/clash_version.sh | 10 +- .../usr/share/openclash/openclash_core.sh | 8 +- .../share/openclash/openclash_game_rule.sh | 8 +- .../usr/share/openclash/openclash_rule.sh | 56 ++++-- .../usr/share/openclash/openclash_update.sh | 8 +- .../usr/share/openclash/openclash_version.sh | 10 +- .../usr/share/openclash/yml_groups_get.sh | 11 +- .../share/openclash/yml_groups_name_get.sh | 59 ++++--- .../usr/share/openclash/yml_rules_change.sh | 2 +- 16 files changed, 343 insertions(+), 181 deletions(-) diff --git a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash index d9f1e86ade..9c8e564e12 100755 --- a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash +++ b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash @@ -100,63 +100,55 @@ fake_block() { yml_check() { - #创建启动备份 + #替换tab + sed -i 's/\t/ /g' "$3" 2>/dev/null + + #检查关键字避免后续操作出错 + #proxies + sed -i "/^ \{0,\}\'Proxy\':/c\Proxy:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"Proxy\":/c\Proxy:' "$3" 2>/dev/null + sed -i "/^ \{1,\}Proxy:/c\Proxy:" "$3" 2>/dev/null + [ -z "$(grep "^Proxy:" "$CFG_FILE")" ] && { + sed -i "s/^\'proxies\':/Proxy:/" "$CFG_FILE" 2>/dev/null + sed -i 's/^\"proxies\":/Proxy:/' "$CFG_FILE" 2>/dev/null + sed -i "s/^proxies:/Proxy:/" "$CFG_FILE" 2>/dev/null + } + + #proxy-providers + sed -i "/^ \{0,\}\'proxy-provider\':/c\proxy-provider:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"proxy-provider\":/c\proxy-provider:' "$3" 2>/dev/null + sed -i "/^ \{1,\}proxy-provider:/c\proxy-provider:" "$3" 2>/dev/null + sed -i "/^ \{0,\}\'proxy-providers\':/c\proxy-provider:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"proxy-providers\":/c\proxy-provider:' "$3" 2>/dev/null + sed -i "/^ \{0,\}proxy-providers:/c\proxy-provider:" "$3" 2>/dev/null + + #proxy-groups + sed -i "/^ \{0,\}\'Proxy Group\':/c\Proxy Group:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"Proxy Group\":/c\Proxy Group:' "$3" 2>/dev/null + sed -i "/^ \{1,\}Proxy Group:/c\Proxy Group:" "$3" 2>/dev/null + sed -i "/^ \{0,\}\'proxy-groups\':/c\Proxy Group:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"proxy-groups\":/c\Proxy Group:' "$3" 2>/dev/null + sed -i "/^ \{0,\}proxy-groups:/c\Proxy Group:" "$3" 2>/dev/null + + #rules + sed -i "/^ \{0,\}\'Rule\':/c\Rule:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"Rule\":/c\Rule:' "$3" 2>/dev/null + sed -i "/^ \{1,\}Rule:/c\Rule:" "$3" 2>/dev/null + sed -i "/^ \{0,\}\'rules\':/c\Rule:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"rules\":/c\Rule:' "$3" 2>/dev/null + sed -i "/^ \{0,\}rules:/c\Rule:" "$3" 2>/dev/null + + sed -i "/^ \{0,\}\'dns\':/c\dns:" "$3" 2>/dev/null + sed -i '/^ \{0,\}\"dns\":/c\dns:' "$3" 2>/dev/null + sed -i "/^ \{1,\}dns:/c\dns:" "$3" 2>/dev/null + + #创建启动备份 cp "$3" "$5" #创建原始备份 if [ ! -f "$4" ]; then cp "$3" "$4" fi - - #替换tab - sed -i 's/\t/ /g' "$3" 2>/dev/null - - #检查关键字避免后续操作出错 - - [ ! -z "$(grep "^ \{0,\}'Proxy':" "$3")" ] || [ ! -z "$(grep '^ \{0,\}"Proxy":' "$3")" ] && { - sed -i "/^ \{0,\}\'Proxy\'/c\Proxy:" "$3" - sed -i '/^ \{0,\}\"Proxy\":/c\Proxy:' "$3" - } - - [ ! -z "$(grep "^ \{0,\}'proxy-provider':" "$3")" ] || [ ! -z "$(grep '^ \{0,\}"proxy-provider":' "$3")" ] && { - sed -i "/^ \{0,\}\'proxy-provider\'/c\proxy-provider:" "$3" - sed -i '/^ \{0,\}\"proxy-provider\":/c\proxy-provider:' "$3" - } - - [ ! -z "$(grep "^ \{0,\}'Proxy Group':" "$3")" ] || [ ! -z "$(grep '^ \{0,\}"Proxy Group":' "$3")" ] && { - sed -i "/^ \{0,\}\'Proxy Group\'/c\Proxy Group:" "$3" - sed -i '/^ \{0,\}\"Proxy Group\":/c\Proxy Group:' "$3" - } - - [ ! -z "$(grep "^ \{0,\}'Rule':" "$3")" ] || [ ! -z "$(grep '^ \{0,\}"Rule":' "$3")" ] && { - sed -i "/^ \{0,\}\'Rule\'/c\Rule:" "$3" - sed -i '/^ \{0,\}\"Rule\":/c\Rule:' "$3" - } - - [ ! -z "$(grep "^ \{0,\}'dns':" "$3")" ] || [ ! -z "$(grep '^ \{0,\}"dns":' "$3")" ] && { - sed -i "/^ \{0,\}\'dns\'/c\dns:" "$3" - sed -i '/^ \{0,\}\"dns\":/c\dns:' "$3" - } - - [ ! -z "$(grep "^ \{1,\}Proxy:" "$3")" ] && { - sed -i "/^ \{1,\}Proxy:/c\Proxy:" "$3" - } - - [ ! -z "$(grep "^ \{1,\}proxy-provider:" "$3")" ] && { - sed -i "/^ \{1,\}proxy-provider:/c\proxy-provider:" "$3" - } - - [ ! -z "$(grep "^ \{1,\}Proxy Group:" "$3")" ] && { - sed -i "/^ \{1,\}Proxy Group:/c\Proxy Group:" "$3" - } - - [ ! -z "$(grep "^ \{1,\}Rule:" "$3")" ] && { - sed -i "/^ \{1,\}Rule:/c\Rule:" "$3" - } - - [ ! -z "$(grep "^ \{1,\}dns:" "$3")" ] && { - sed -i "/^ \{1,\}dns:/c\dns:" "$3" - } #位置检查 proxy_len=$(sed -n '/^Proxy:/=' "$3" 2>/dev/null) @@ -688,8 +680,8 @@ if [ "$enable" -eq 1 ] && [ -f "$CONFIG_FILE" ]; then socks_port=$(uci get openclash.config.socks_port 2>/dev/null) enable_redirect_dns=$(uci get openclash.config.enable_redirect_dns 2>/dev/null) lan_ip=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null) - wan_ip4=$(ubus call network.interface.wan status 2>/dev/null | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' 2>/dev/null) - lan_ip6=$(uci get network.lan.ip6addr 2>/dev/null) + wan_ip4=$(ifconfig | grep 'inet addr' | awk '{print $2}' | cut -d: -f2 2>/dev/null) + lan_ip6=$(ifconfig | grep 'inet6 addr' | awk '{print $3}' 2>/dev/null) direct_dns=$(uci get openclash.config.direct_dns 2>/dev/null) disable_masq_cache=$(uci get openclash.config.disable_masq_cache 2>/dev/null) log_level=$(uci get openclash.config.log_level 2>/dev/null) @@ -762,6 +754,8 @@ cat > "/var/etc/openclash.include" <<-EOF EOF iptables -t nat -I PREROUTING -p tcp --dport 53 -j ACCEPT if [ -z "$en_mode_tun" ]; then + + #tcp iptables -t nat -N openclash iptables -t nat -A openclash -d 0.0.0.0/8 -j RETURN iptables -t nat -A openclash -d 10.0.0.0/8 -j RETURN @@ -772,19 +766,53 @@ EOF iptables -t nat -A openclash -d 224.0.0.0/4 -j RETURN iptables -t nat -A openclash -d 240.0.0.0/4 -j RETURN if [ ! -z "$wan_ip4" ]; then - iptables -t nat -A openclash -d "$wan_ip4" -j RETURN + for wan_ip4s in $wan_ip4; do + iptables -t nat -A openclash -d "$wan_ip4s" -j RETURN 2>/dev/null + done fi - iptables -t nat -A openclash -p tcp -j REDIRECT --to-ports "$proxy_port" iptables -t nat -A PREROUTING -p tcp -j openclash + + #udp + ip rule add fwmark 1 table 100 + ip route add local default dev lo table 100 + iptables -t mangle -N openclash + iptables -t mangle -A openclash -d 0.0.0.0/8 -j RETURN + iptables -t mangle -A openclash -d 10.0.0.0/8 -j RETURN + iptables -t mangle -A openclash -d 127.0.0.0/8 -j RETURN + iptables -t mangle -A openclash -d 169.254.0.0/16 -j RETURN + iptables -t mangle -A openclash -d 172.16.0.0/12 -j RETURN + iptables -t mangle -A openclash -d 192.168.0.0/16 -j RETURN + iptables -t mangle -A openclash -d 224.0.0.0/4 -j RETURN + iptables -t mangle -A openclash -d 240.0.0.0/4 -j RETURN + if [ ! -z "$wan_ip4" ]; then + for wan_ip4s in $wan_ip4; do + iptables -t mangle -A openclash -d "$wan_ip4s" -j RETURN 2>/dev/null + done + fi + + iptables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark 1 + iptables -t mangle -A PREROUTING -p udp -j openclash + if [ "$en_mode" = "fake-ip" ]; then iptables -t nat -A OUTPUT -p tcp -d 198.18.0.0/16 -j REDIRECT --to-ports "$proxy_port" + iptables -t mangle -A OUTPUT -p udp -d 198.18.0.0/16 -j MARK --set-mark 1 fi if [ "$ipv6_enable" -eq 1 ]; then ip6tables -t nat -N openclash + ip6tables -t mangle -N openclash + if [ ! -z "$lan_ip6" ]; then + for lan_ip6s in $lan_ip6; do + ip6tables -t nat -A openclash -d "$lan_ip6s" -j RETURN 2>/dev/null + ip6tables -t mangle -A openclash -d "$lan_ip6s" -j RETURN 2>/dev/null + done + fi ip6tables -t nat -A openclash -p tcp -j REDIRECT --to-ports "$proxy_port" ip6tables -t nat -A PREROUTING -p tcp -j openclash + + ip6tables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark 1 + ip6tables -t mangle -A PREROUTING -p udp -j openclash fi else #TUN模式 @@ -796,7 +824,11 @@ EOF ipset add localnetwork 224.0.0.0/4 ipset add localnetwork 240.0.0.0/4 ipset add localnetwork 172.16.0.0/12 - ipset add localnetwork "$wan_ip4" + if [ ! -z "$wan_ip4" ]; then + for wan_ip4s in $wan_ip4; do + ipset add localnetwork "$wan_ip4s" 2>/dev/null + done + fi #启动TUN if [ "$en_mode_tun" = "2" ]; then ip tuntap add user root mode tun clash0 @@ -822,9 +854,9 @@ EOF iptables -t mangle -I OUTPUT -j openclash iptables -t mangle -I PREROUTING -m set ! --match-set localnetwork dst -j MARK --set-mark "$PROXY_FWMARK" #ipv6 - if [ "$ipv6_enable" -eq 1 ]; then - ip6tables -t mangle -I PREROUTING -j MARK --set-mark "$PROXY_FWMARK" - fi + #if [ "$ipv6_enable" -eq 1 ]; then + #ip6tables -t mangle -I PREROUTING -j MARK --set-mark "$PROXY_FWMARK" + #fi fi echo "第九步: 重启 Dnsmasq 程序..." >$START_LOG @@ -931,16 +963,33 @@ stop() rm -rf /var/etc/openclash.include 2>/dev/null #ipv4 + + ip rule del fwmark 1 table 100 >/dev/null 2>&1 + ip route del local default dev lo table 100 >/dev/null 2>&1 + + iptables -t mangle -F openclash >/dev/null 2>&1 + iptables -t mangle -D PREROUTING -p udp -j openclash >/dev/null 2>&1 + iptables -t mangle -X openclash >/dev/null 2>&1 + iptables -t nat -F openclash >/dev/null 2>&1 iptables -t nat -D PREROUTING -p tcp -j openclash >/dev/null 2>&1 iptables -t nat -X openclash >/dev/null 2>&1 + out_lines=$(iptables -nvL OUTPUT -t mangle |sed 1,2d |sed -n '/198.18.0.0\/16/=' 2>/dev/null |sort -rn) + for out_line in $out_lines; do + iptables -t mangle -D OUTPUT "$out_line" >/dev/null 2>&1 + done + out_lines=$(iptables -nvL OUTPUT -t nat |sed 1,2d |sed -n '/198.18.0.0\/16/=' 2>/dev/null |sort -rn) for out_line in $out_lines; do iptables -t nat -D OUTPUT "$out_line" >/dev/null 2>&1 done #ipv6 + ip6tables -t mangle -F openclash >/dev/null 2>&1 + ip6tables -t mangle -D PREROUTING -p udp -j openclash >/dev/null 2>&1 + ip6tables -t mangle -X openclash >/dev/null 2>&1 + ip6tables -t nat -F openclash >/dev/null 2>&1 ip6tables -t nat -D PREROUTING -p tcp -j openclash >/dev/null 2>&1 ip6tables -t nat -X openclash >/dev/null 2>&1 diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/ConnersHua.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/ConnersHua.yaml index eb5fff56fa..8b942aac11 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/ConnersHua.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/ConnersHua.yaml @@ -394,6 +394,7 @@ Rule: - DOMAIN-SUFFIX,tvb.com,GlobalMedia # > Netflix # USER-AGENT,Argo*,GlobalMedia +- DOMAIN-SUFFIX,fast.com,GlobalMedia - DOMAIN-SUFFIX,netflix.com,GlobalMedia - DOMAIN-SUFFIX,netflix.net,GlobalMedia - DOMAIN-SUFFIX,nflxext.com,GlobalMedia @@ -1171,14 +1172,18 @@ Rule: # > Tencent # USER-AGENT,MicroMessenger%20Client,DIRECT # USER-AGENT,WeChat*,DIRECT +# USER-AGENT,%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1*,DIRECT - DOMAIN-SUFFIX,gtimg.com,DIRECT - DOMAIN-SUFFIX,idqqimg.com,DIRECT - DOMAIN-SUFFIX,igamecj.com,DIRECT - DOMAIN-SUFFIX,myapp.com,DIRECT - DOMAIN-SUFFIX,myqcloud.com,DIRECT - DOMAIN-SUFFIX,qq.com,DIRECT +- DOMAIN-SUFFIX,servicewechat.com,DIRECT - DOMAIN-SUFFIX,tencent.com,DIRECT - DOMAIN-SUFFIX,tencent-cloud.net,DIRECT +- DOMAIN-SUFFIX,tenpay.com,DIRECT +- DOMAIN,file-igamecj.akamaized.net,DIRECT # > YYeTs # USER-AGENT,YYeTs*,DIRECT - DOMAIN-SUFFIX,jstucdn.com,DIRECT diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml index 8949407d04..ac099d80ae 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml @@ -72,23 +72,23 @@ dns: # 如订阅配置无包括此项的所有DNS设置,OpenClash将自动添 # 以上设置您可直接覆盖到配置文件,无需更改 # Openclash 不会对下方服务器设置进行任何更改,请确保设置正确 -proxy-provider: # 代理集设置,此部分与Proxy两者不能同时删除 - pro: - type: http - path: ./proxy_provider/pro.yaml - url: https://xxx - interval: 3600 - health-check: - enable: true - url: http://www.gstatic.com/generate_204 - interval: 300 - iplc: - type: file - path: ./proxy_provider/iplc.yaml - health-check: - enable: true - url: http://www.gstatic.com/generate_204 - interval: 300 +#proxy-provider: # 代理集设置,此部分与Proxy两者不能同时删除 +# pro: +# type: http +# path: ./proxy_provider/pro.yaml +# url: https://xxx +# interval: 3600 +# health-check: +# enable: true +# url: http://www.gstatic.com/generate_204 +# interval: 300 +# iplc: +# type: file +# path: ./proxy_provider/iplc.yaml +# health-check: +# enable: true +# url: http://www.gstatic.com/generate_204 +# interval: 300 Proxy: # 节点设置,此部分与proxy-provider两者不能同时删除 diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml index 2d921bb85e..fcded61309 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml @@ -865,7 +865,6 @@ Rule: - DOMAIN-SUFFIX,ab-gb.mgid.com,AdBlock - DOMAIN-SUFFIX,abtest.mistat.xiaomi.com,AdBlock - DOMAIN-SUFFIX,ac.atpanel.com,AdBlock -- DOMAIN-SUFFIX,ac.mmstat.com,AdBlock - DOMAIN-SUFFIX,ac2.msn.com,AdBlock - DOMAIN-SUFFIX,ac3.msn.com,AdBlock - DOMAIN-SUFFIX,acasys88.cn,AdBlock @@ -1525,7 +1524,6 @@ Rule: - DOMAIN-SUFFIX,api.ijunhai.com,AdBlock - DOMAIN-SUFFIX,api.itaoxiaoshuo.com,AdBlock - DOMAIN-SUFFIX,api.joybj.com,AdBlock -- DOMAIN-SUFFIX,api.jr.mi.com,AdBlock - DOMAIN-SUFFIX,api.ketedata.com,AdBlock - DOMAIN-SUFFIX,api.koudaikj.com,AdBlock - DOMAIN-SUFFIX,api.leadbolt.net,AdBlock @@ -1718,7 +1716,6 @@ Rule: - DOMAIN-SUFFIX,b.aowugame.com,AdBlock - DOMAIN-SUFFIX,b.babylon.com,AdBlock - DOMAIN-SUFFIX,b.baiy.net,AdBlock -- DOMAIN-SUFFIX,b.bdstatic.com,AdBlock - DOMAIN-SUFFIX,b.bst.126.net,AdBlock - DOMAIN-SUFFIX,b.clkservice.youdao.com,AdBlock - DOMAIN-SUFFIX,b.code.tanwanyx.com,AdBlock @@ -3737,7 +3734,6 @@ Rule: - DOMAIN-SUFFIX,go.gotourl.xyz,AdBlock - DOMAIN-SUFFIX,go.gotourls.bid,AdBlock - DOMAIN-SUFFIX,go.hangzhou.com.cn,AdBlock -- DOMAIN-SUFFIX,go.mmstat.com,AdBlock - DOMAIN-SUFFIX,go.onclasrv.com,AdBlock - DOMAIN-SUFFIX,go.util.zlibs.com,AdBlock - DOMAIN-SUFFIX,godloveme.cn,AdBlock @@ -3799,7 +3795,6 @@ Rule: - DOMAIN-SUFFIX,gw6.push.mcp.weibo.cn,AdBlock - DOMAIN-SUFFIX,gw630.com,AdBlock - DOMAIN-SUFFIX,gx38.cn,AdBlock -- DOMAIN-SUFFIX,gxb.mmstat.com,AdBlock - DOMAIN-SUFFIX,gxdhgb.com,AdBlock - DOMAIN-SUFFIX,gxe.husky.sogou.com,AdBlock - DOMAIN-SUFFIX,gyca9f.dahuangcheng.cn,AdBlock @@ -3987,7 +3982,6 @@ Rule: - DOMAIN-SUFFIX,hytgj.com,AdBlock - DOMAIN-SUFFIX,hyz86.com,AdBlock - DOMAIN-SUFFIX,hz.miercn.com,AdBlock -- DOMAIN-SUFFIX,hz.mmstat.com,AdBlock - DOMAIN-SUFFIX,hz.shouyoutv.com,AdBlock - DOMAIN-SUFFIX,hzaibi.com,AdBlock - DOMAIN-SUFFIX,hzdmacore.kejet.net,AdBlock @@ -5452,7 +5446,6 @@ Rule: - DOMAIN-SUFFIX,mmcc.yxlady.com,AdBlock - DOMAIN-SUFFIX,mmg.aty.cp45.ott.cibntv.net,AdBlock - DOMAIN-SUFFIX,mmg.aty.snmsohu.aisee.tv,AdBlock -- DOMAIN-SUFFIX,mmstat.com,AdBlock - DOMAIN-SUFFIX,mng-ads.com,AdBlock - DOMAIN-SUFFIX,mnkan.com,AdBlock - DOMAIN-SUFFIX,mnwan.com,AdBlock @@ -5846,7 +5839,6 @@ Rule: - DOMAIN-SUFFIX,p215223.inclk.com,AdBlock - DOMAIN-SUFFIX,p215223.mycdn2.co,AdBlock - DOMAIN-SUFFIX,p2pmid.baofeng.com,AdBlock -- DOMAIN-SUFFIX,p3p.mmstat.com,AdBlock - DOMAIN-SUFFIX,p3p.sogou.com,AdBlock - DOMAIN-SUFFIX,p3p.yahoo.com,AdBlock - DOMAIN-SUFFIX,p3tt.com,AdBlock @@ -6354,7 +6346,6 @@ Rule: - DOMAIN-SUFFIX,res.dxpmedia.com,AdBlock - DOMAIN-SUFFIX,res.icast.cn,AdBlock - DOMAIN-SUFFIX,res.ipingke.com,AdBlock -- DOMAIN-SUFFIX,res.mmstat.com,AdBlock - DOMAIN-SUFFIX,res.qhupdate.com,AdBlock - DOMAIN-SUFFIX,res3.feedsportal.com,AdBlock - DOMAIN-SUFFIX,rescn.u3.ucweb.com,AdBlock @@ -7666,7 +7657,6 @@ Rule: - DOMAIN-SUFFIX,wgie.0z5jn.cn,AdBlock - DOMAIN-SUFFIX,wgnlz.com,AdBlock - DOMAIN-SUFFIX,wgnmp.com,AdBlock -- DOMAIN-SUFFIX,wgo.mmstat.com,AdBlock - DOMAIN-SUFFIX,whafwl.com,AdBlock - DOMAIN-SUFFIX,whalecloud.com,AdBlock - DOMAIN-SUFFIX,whcrdz.com,AdBlock @@ -8106,7 +8096,6 @@ Rule: - DOMAIN-SUFFIX,ysjwj.com,AdBlock - DOMAIN-SUFFIX,ysm.hauchi.com.tw,AdBlock - DOMAIN-SUFFIX,ysm.yahoo.com,AdBlock -- DOMAIN-SUFFIX,yt.mmstat.com,AdBlock - DOMAIN-SUFFIX,yt-adp.nosdn.127.net,AdBlock - DOMAIN-SUFFIX,ytapi1.nagezan.net,AdBlock - DOMAIN-SUFFIX,ytdksb.com,AdBlock @@ -8487,6 +8476,7 @@ Rule: # - USER-AGENT,InstantVideo.US*,GlobalTV # - USER-AGENT,Prime%20Video*,GlobalTV - DOMAIN-SUFFIX,aiv-cdn.net,GlobalTV +- DOMAIN-SUFFIX,amazonaws.co.uk,GlobalTV - DOMAIN-SUFFIX,amazonaws.com,GlobalTV - DOMAIN-SUFFIX,amazonvideo.com,GlobalTV - DOMAIN-SUFFIX,llnwd.net,GlobalTV @@ -8517,6 +8507,14 @@ Rule: # - USER-AGENT,TwDramas*,GlobalTV - DOMAIN-SUFFIX,chocotv.com.tw,GlobalTV +# > DAZN +- DOMAIN-SUFFIX,d151l6v8er5bdm.cloudfront.net,GlobalTV +- DOMAIN-SUFFIX,dazn.com,GlobalTV +- DOMAIN-SUFFIX,dazn-api.com,GlobalTV +- DOMAIN-SUFFIX,dazndn.com,GlobalTV +- DOMAIN-SUFFIX,indazn.com,GlobalTV +- DOMAIN-SUFFIX,intercom.io,GlobalTV + # > Disney Plus # - USER-AGENT,Disney*,GlobalTV - DOMAIN,cdn.registerdisney.go.com,GlobalTV @@ -8595,6 +8593,8 @@ Rule: # > SoundCloud # - USER-AGENT,SoundCloud*,GlobalTV +- DOMAIN-SUFFIX,sndcdn.com,GlobalTV +- DOMAIN-SUFFIX,soundcloud.com,GlobalTV # > viuTV - DOMAIN-SUFFIX,cloudfront.net,GlobalTV @@ -8616,6 +8616,21 @@ Rule: - DOMAIN-SUFFIX,nflximg.net,Netflix - DOMAIN-SUFFIX,nflxso.net,Netflix - DOMAIN-SUFFIX,nflxvideo.net,Netflix +- IP-CIDR,8.41.4.0/24,Netflix +- IP-CIDR,23.246.0.0/18,Netflix +- IP-CIDR,37.77.184.0/21,Netflix +- IP-CIDR,45.57.0.0/17,Netflix +- IP-CIDR,64.120.128.0/17,Netflix +- IP-CIDR,66.197.128.0/17,Netflix +- IP-CIDR,69.53.224.0/19,Netflix +- IP-CIDR,108.175.32.0/20,Netflix +- IP-CIDR,185.2.220.0/22,Netflix +- IP-CIDR,185.9.188.0/22,Netflix +- IP-CIDR,192.173.64.0/18,Netflix +- IP-CIDR,198.38.96.0/19,Netflix +- IP-CIDR,198.45.48.0/20,Netflix +- IP-CIDR,207.45.72.0/22,Netflix +- IP-CIDR,208.75.76.0/22,Netflix # > Spotify # - USER-AGENT,*Spotify*,Spotify @@ -8661,14 +8676,12 @@ Rule: -# > Dler Cloud -- DOMAIN,dler.cloud,DIRECT - # > Google - DOMAIN-KEYWORD,mtalk.google.com,DIRECT - DOMAIN,safebrowsing.googleapis.com,DIRECT # > Steam +# - USER-AGENT,Steam*,DIRECT - DOMAIN-SUFFIX,steamcontent.com,DIRECT # > Private Tracker @@ -8706,9 +8719,6 @@ Rule: # - URL-REGEX,(.+\.|^)(360|so|qihoo|360safe|qhimg|360totalsecurity|yunpan)\.(cn|com),DIRECT # - URL-REGEX,(.+\.)?(torrent|announce\.php\?passkey=|tracker|BitTorrent|bt_key|ed2k|find_node|get_peers|info_hash|magnet:|peer_id=|sandai|Thunder|XLLiveUD|xunlei)(\..+)?,DIRECT -- DOMAIN-SUFFIX,smtp,DIRECT,no-resolve -- DOMAIN-SUFFIX,local,DIRECT,no-resolve - # > Line @@ -8722,7 +8732,13 @@ Rule: # > Microsoft # - USER-AGENT,OneDrive*,Proxy -- DOMAIN-SUFFIX,onedrive.live.com,Proxy +- DOMAIN-KEYWORD,microsoft,Proxy +- DOMAIN-KEYWORD,onedrive,Proxy +- DOMAIN-SUFFIX,azure.com,Proxy +- DOMAIN-SUFFIX,live.com,Proxy +- DOMAIN-SUFFIX,live.net,Proxy +- DOMAIN-SUFFIX,office.com,Proxy +- DOMAIN-SUFFIX,office.net,Proxy - DOMAIN-SUFFIX,skype.com,Proxy # > Spark @@ -9037,7 +9053,6 @@ Rule: - DOMAIN-SUFFIX,nytstyle.com,Proxy - DOMAIN-SUFFIX,office365.com,Proxy - DOMAIN-SUFFIX,omnigroup.com,Proxy -- DOMAIN-SUFFIX,onedrive.com,Proxy - DOMAIN-SUFFIX,onenote.com,Proxy - DOMAIN-SUFFIX,ooyala.com,Proxy - DOMAIN-SUFFIX,openvpn.net,Proxy @@ -9280,6 +9295,7 @@ Rule: - DOMAIN-SUFFIX,wn.com,Proxy - DOMAIN-SUFFIX,wordpress.com,Proxy - DOMAIN-SUFFIX,workflow.is,Proxy +- DOMAIN-SUFFIX,workflowy.com,Proxy - DOMAIN-SUFFIX,worldcat.org,Proxy - DOMAIN-SUFFIX,wow.com,Proxy - DOMAIN-SUFFIX,wp.com,Proxy @@ -9458,14 +9474,9 @@ Rule: - DOMAIN-SUFFIX,blizzard.com,Domestic # > Microsoft -- DOMAIN-KEYWORD,microsoft,Domestic -- DOMAIN-SUFFIX,azure.com,Domestic +- DOMAIN-SUFFIX,azure.cn,Domestic - DOMAIN-SUFFIX,hotmail.com,Domestic -- DOMAIN-SUFFIX,live.com,Domestic -- DOMAIN-SUFFIX,live.net,Domestic - DOMAIN-SUFFIX,msn.com,Domestic -- DOMAIN-SUFFIX,office.com,Domestic -- DOMAIN-SUFFIX,office.net,Domestic - DOMAIN-SUFFIX,outlook.com,Domestic - DOMAIN-SUFFIX,windows.com,Domestic - DOMAIN-SUFFIX,windows.net,Domestic @@ -9591,7 +9602,6 @@ Rule: - DOMAIN-SUFFIX,iciba.com,Domestic - DOMAIN-SUFFIX,ifeng.com,Domestic - DOMAIN-SUFFIX,ifengimg.com,Domestic -- DOMAIN-SUFFIX,images.unsplash.com,Domestic - DOMAIN-SUFFIX,images-amazon.com,Domestic - DOMAIN-SUFFIX,img4me.com,Domestic - DOMAIN-SUFFIX,ipify.org,Domestic diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version b/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version index bd02906973..820d39a44b 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version @@ -1,2 +1,2 @@ -v0.36.7-beta -data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjYyQzhEQTY3NUE3RTExRUE4MEY4QTczODI5MjI3QzVGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjYyQzhEQTY4NUE3RTExRUE4MEY4QTczODI5MjI3QzVGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjJDOERBNjU1QTdFMTFFQTgwRjhBNzM4MjkyMjdDNUYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjJDOERBNjY1QTdFMTFFQTgwRjhBNzM4MjkyMjdDNUYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7qtytCAAADAFBMVEXL2+XT09MAN2hJm8uCvN2TxeEbe7MARneDg4Nzc3P09PRSUlLFxcVUVFQNf78Gd7gNfr4CVYrX4ujMzMyLi4tiYmKkpKS9vb1BQUEFYpfZ2dmsrKxISEgJfL08lcm0tLQzMzN7e3sBW5MTExMEdrZ1tdlYptJFRUVoaGgBcrONwuACfMIFdrd0qMX9/f1lrNQFer0IerpViafI4vEpg7YTgsFlmbkweaUXdau+3O0rKyuiw9Y8PDzL190Bdbnb7PX4+PgAXKdYWFjz+fzp6emWlpYOgMAOebYAbbbl5eWizeUJe7vk8vm1zNqZmZmenp6Xtsg4ODgVgL4gICADbKlqsdk5dprg4OBmkawHcKwAYazt9vpChasahsN2orzf7vcAcbgAZrFvb28AabEATo1YlrpopczV6PMyi8IKhczq8PWx1ekja5YGaKCq1OxLS0uQkJBUmsMpjMQAYqCnvMkoY4lCfZ/4/P/v7+8kicK10eHH3+wMbKMKgcREnM5Uos9WUE1bVVIZaZcAb7cDcLFeWFUAeb8IeLtTTUoMfb4AdrxRUVEAbbICc7QHfL/f6O0EdbbW6/cAarTz9fcAcLYGf8NXV1cLfL16r80LdbFKlMBhW1jY7vquzd8AcrfP5vMAK19PodAVU3wZYowIebkKf8IUXIe32exvmrIOfr6Fvt///voATn8wbJHk8PcAb7T++/jt+f/r7OzA094Wgr/6+/sucZeBpr7A1uMAc7gHgskfhsIIb6kFcq8AcbwDeLqIrsRNn84HdrcEdbVfj6sKe7z7+vgJdrcCcrcQergAcbUQfLsAPnAFdLIOfL8XhcQDdbUCdLQDdLUSg8MThMQgi8hSUlFVVVVTU1MYhMFcXFsEdLkKebgEc7URcKYNhMmFtNFOgqEFeLsykshHirG+2OZQjK8PYJHc8PuOu9S/3vALfr5mZmYTfbsGbLJ6uNxZWVkRgsMQgcJWVlYPgMFaWlpQUFBdXV1bW1tcXFxOTk5NTU1PT09eXl7///////89qcNJAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAAFDxJREFUeNrsmw9YVGW+xwFTBg+HAfkzBzgDMwx6SAmH9JqOJ5IRbFCDhjFJaJNhKLsVDcWmlqkVbQbjYrHOUO1atDus2rJ513LbSY01pac1unvv7t47p7ttGd7au6HXuTvOCDPDz/t7z/yFzHruPvfehWe/PuL75/fnnM/7nvcPz2Pc5cuXZcqi6aDF//LXrx2rkXfc5dmS8emg74/P+vvf/fXrtzsakLlyfNow/+1U0I7LcbLx6cP8d1MC+uq4pGnE/L+mhM7GZV6aHvr+panC/NfTivmfp4S+FZc5Nj30/X/7G/P/B+ZvXZwSQuaj00PfGZ3azLVut1vr+V8A44kJ6nF9owzf0ExkvurKupja1dWVenFya4ocm0cuTmpIibVLSU2JKNb3z+r2xlUXV/3PhMw9EzU6GmD8tNMZ4FjtqOcv05gzQMfEGHOxnHAplGbMzPrHvj7BuJdlPd/kOb7jmfVWypV0cZWjUd2lbnQg1JjWkfb2zi5sbky5GELaqetEO/WqqNGfOxvbQ2p0XIxxlx+ddyKlY9WV83V1qlOupi8xH7UxmdXJFVsr0rOUZu/YX8ZcO16U6YpWqaL83KJAqOKX5Fa7bV8bAs1qPO5vwtz1FcxT2h+af9Pam+Y/1B4zaVPk8h2vfrF27ab5ee1yAvOiXHd07v7X1m7a8V7EpmN43vxXw1rYJY96N+6Eho6nr5xu5O8e+VZq6tWZu2LloZnWrRBSembA9ReJyZqdz7ojVV8mQC4fLFOW2ZDM2L42hCIZQPtNHuM7rqVvpV5BKe15K8W32TJDlxJt7p4bfsvbdCOpqat2tS8Mmr1qjFjJuxdBRJs61VHv9ldgbcdAypXypeoWNjwwoE79ak1mbmNqAOKVHsuoUgaQwXwztlqbewK9cFWfD8lclLmHz4UqihKLjAQgifN82TcSwq0l/7IZslwtHY6qjU0asggz91yZeVltA+xb/+T6fbCytizS2mF8AG694/77N/8C4GwjwXsBYDk2XJ8XxdWh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 \ No newline at end of file +v0.36.8-beta +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjVGQkYwQjEzNjE0MDExRUFCNzI4RUQ0NzU0MTdCQUFFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjVGQkYwQjE0NjE0MDExRUFCNzI4RUQ0NzU0MTdCQUFFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUZCRjBCMTE2MTQwMTFFQUI3MjhFRDQ3NTQxN0JBQUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NUZCRjBCMTI2MTQwMTFFQUI3MjhFRDQ3NTQxN0JBQUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7ZA2oFAAADAFBMVEXR0dEkhbyEvN3R4uwreqcGVYJtbW09PT3B1eBFmsqEhIS6uroKaqFYpdIJdbSUxeEGXpFlnbyx0OI6lsoJeLiTu9KCgoKenp7a2tqlpaVTiqp4eHgkapLf3981dZpjlLHn5+c/Pz8GcKzGxsbR5vJ3t9uhoaEFXI6izOXOzs5paWkJca0FYJQGbak1h7WRkZFxcXG/v79GRkasrKy1tbWy1elmrdaDs86ixdkEU4DKyspzobtiYmIWaJcqjcYEWYkXgL2yzd0IYpVLS0tDQ0MXYo0JX4/g4OCLi4tkq9NGirGStcgJZJiyytl2dnbAwMCcnJzR3+gHdLHCwsJBQUFFgKKiwNJCQkIFaaImcJu2trYahMGXl5dFkb2DqsHw9feEtNBynrg3kcYchsNlZWUnicGNjY2jyN4JWIUFcrAZdatHnM0HZ50HbKWDrcWkzuavr6+hv9BgYGCDq8KUlJRWk7cGZJpJns7B2uiRuM8EYph0dHQJcKyJweIwk8tInM10sdVGhKdKns9DfqAFZZsRgsMCc7QBcrNRUVFUVFRVVVVSUlILfL1WVlYFdrcHeLkEdrYDdLUOgMAEdbYOf8ADdLQDdbUSg8NXV1cSg8QShMQThMUAcrIKe7wGd7gOf78Nfr8Nfr4Mfb4Mfb0IebkJeroJe7sJers6OjqqqqrU1NTV1dWrq6tISEipqak7Ozt+fn7w9/uAgIAHVoRJSUmBgYHC3u7q6urz8/NMTEz19fXh7/f09PR/f3+DvNzv9PfB3e2Gvt+Fvt6Hv9/g6u+CqcCErMLB3u6JiYmGv98FZ5/A1N8UXono6Ojg6vDB3e4IaJ+Evd0Lerng7vbW1tbC3+/D3+90s9gEVYMHWIcLdK9Gm8sFZ6AFa6ZVos8Zg78Lb6gGdbRInc6Dr8gFdLPv9vqDu9wKeLcEV4cvksujxNY2jsAId7fP5PGAudlTU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7////////izl8cAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADHBJREFUeNrsVwtUVGUeHzQYHCFQ0gEHhUESEQ29gDWKzxkFH+SCWL4ynycsXTUtTd22WnZXBGK3fbG7Ya0R8hpkAnknmvjEF5r5KLOstrbaZtd1AzF+7P/77p3h3kGMs3U8Z+b4O4f7/Z+//72/7869F1V7e83aYdddAX91Ajz/M0t7u6o9bst118BfnALPh7araka2uAj+7Bx43qJa6yqSt/zJSfAz1cjvXAW/dBL8Q/XdXc3vNFxI8387C1Tfugzuan7n8S9ngeq/LoO7mt95vOIsUP3HZfB7Z8EtNddERUVFevz4qizXaJbbHQ+Npjs9Oo2um+yvdQm/+w/c7+cYfGWZ94EDB15yDIzv3HvAe5lj81Ecfe3/huqaI2Ln14AjbmHstR8ITZRG4ddgod2ehTHdoXgX73Zz2OtdYNl7/HLeW6aIjhejqPW2la3h/tFb9VqOOnAexdGuxr3+0tGXXr8tOmmuqwT8i7XacBql+aGaRyFK7maOQpx9a4HIH1fzv3WBc+jZZ3qfnjiniG4EEg8deuRxYCP3/SxAwqFDCfvlRctqWe8zXwI+Ss792N/VuNvmOFQ3lYiNQ5WHmsGorep/8weCNFf4IwEPyVyIqvTuUAhqoZvDdt4ao3FySkpKypTHMVoe3vhIYAoLn8Qa5i6wIIGVpXjJi/aLvSljgQU7lYn9O7vC7XIcqk4qVcWqTeVGo6BWZw7rrra6/ort6d/f49aam4MxRDKLML9NKtbdmjHWQXMP5ZBYW4UNb9wSO2MwdupHlz6aeggx8villJSpXl6rLh7COeaugWdKykwvr5le8qJzOES9ETNT6NegYH0H77zxxviNfrLQRpvHc/agokaEo+Y10Oq3cSvTyIwi7OHeHhRJx4VxQPHNYhTHFtNjiGWL2QugppjXAbHcLYrljgg7+zYtKiUB6Y7PJuFmsXxl/E0F+c0hlTzMKIshEsfz0KxYqdKDN86Xn3qGBG/USlYtvDMyLHjxDNlnXoQlQ4ZLMz9ny5l+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 \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua index c3b62f8b68..81c3002db3 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua @@ -31,9 +31,21 @@ function config_check(CONFIG_FILE) local proxy,group,rule if yaml then proxy_provier = luci.sys.call(string.format('egrep "^ {0,}proxy-provider:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (proxy_provier ~= 0) then + proxy_provier = luci.sys.call(string.format('egrep "^ {0,}proxy-providers:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end proxy = luci.sys.call(string.format('egrep "^ {0,}Proxy:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (proxy ~= 0) then + proxy = luci.sys.call(string.format('egrep "^ {0,}proxies:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end group = luci.sys.call(string.format('egrep "^ {0,}Proxy Group:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (group ~= 0) then + group = luci.sys.call(string.format('egrep "^ {0,}proxy-groups:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end rule = luci.sys.call(string.format('egrep "^ {0,}Rule:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (rule ~= 0) then + rule = luci.sys.call(string.format('egrep "^ {0,}rules:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end end if yaml then if (proxy == 0) then @@ -80,7 +92,6 @@ if string.sub(luci.sys.exec("uci get openclash.config.config_path"), 23, -2) == else e[t].state=translate("Disable") end -e[t].size=tostring(a.size) e[t].check=translate(config_check(CONFIG_FILE)) end end diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua index fd60a5c7d5..79a310d01a 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua @@ -23,6 +23,57 @@ function IsYmlFile(e) local e=string.lower(string.sub(e,-4,-1)) return e == ".yml" end + +function config_check(CONFIG_FILE) + local yaml = fs.isfile(CONFIG_FILE) + local proxy,group,rule + if yaml then + proxy_provier = luci.sys.call(string.format('egrep "^ {0,}proxy-provider:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (proxy_provier ~= 0) then + proxy_provier = luci.sys.call(string.format('egrep "^ {0,}proxy-providers:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end + proxy = luci.sys.call(string.format('egrep "^ {0,}Proxy:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (proxy ~= 0) then + proxy = luci.sys.call(string.format('egrep "^ {0,}proxies:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end + group = luci.sys.call(string.format('egrep "^ {0,}Proxy Group:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (group ~= 0) then + group = luci.sys.call(string.format('egrep "^ {0,}proxy-groups:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end + rule = luci.sys.call(string.format('egrep "^ {0,}Rule:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (rule ~= 0) then + rule = luci.sys.call(string.format('egrep "^ {0,}rules:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end + end + if yaml then + if (proxy == 0) then + proxy = "" + else + if (proxy_provier == 0) then + proxy = "" + else + proxy = " - 代理服务器" + end + end + if (group == 0) then + group = "" + else + group = " - 策略组" + end + if (rule == 0) then + rule = "" + else + rule = " - 规则" + end + if (proxy=="") and (group=="") and (rule=="") then + return "Config Normal" + else + return proxy..group..rule.." - 部分异常" + end + elseif (yaml ~= 0) then + return "配置文件不存在" + end +end ful = SimpleForm("upload", translate("Config Manage"), nil) ful.reset = false @@ -110,6 +161,7 @@ if a then e[t]={} e[t].name=fs.basename(o) BACKUP_FILE="/etc/openclash/backup/".. e[t].name +CONFIG_FILE="/etc/openclash/config/".. e[t].name e[t].mtime=os.date("%Y-%m-%d %H:%M:%S",fs.mtime(BACKUP_FILE)) or os.date("%Y-%m-%d %H:%M:%S",a.mtime) if string.sub(luci.sys.exec("uci get openclash.config.config_path"), 23, -2) == e[t].name then e[t].state=translate("Enable") @@ -117,21 +169,10 @@ else e[t].state=translate("Disable") end e[t].size=i(a.size) +e[t].check=translate(config_check(CONFIG_FILE)) e[t].remove=0 -e[t].enable=false end end - -function IsYamlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-5,-1)) - return e == ".yaml" -end -function IsYmlFile(e) - e=e or"" - local e=string.lower(string.sub(e,-4,-1)) - return e == ".yml" -end form=SimpleForm("config_file_list",translate("Config File List")) form.reset=false @@ -142,6 +183,8 @@ st.template="openclash/cfg_check" nm=tb:option(DummyValue,"name",translate("Config Alias")) mt=tb:option(DummyValue,"mtime",translate("Update Time")) sz=tb:option(DummyValue,"size",translate("Size")) +ck=tb:option(DummyValue,"check",translate("启动参数检查")) +ck.template="openclash/cfg_check" btnis=tb:option(Button,"switch",translate("Switch Config")) btnis.template="openclash/other_button" diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh index 8b116ae2b1..725b6b22fe 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh @@ -4,9 +4,15 @@ LAST_OPVER="/tmp/clash_last_version" LAST_VER=$(sed -n 1p "$LAST_OPVER" 2>/dev/null |awk -F '-' '{print $1$2}' 2>/dev/null |awk -F '.' '{print $2$3}' 2>/dev/null) CLASH_VERF=$(/etc/openclash/clash -v 2>/dev/null) CLASH_VER=$(echo "$CLASH_VERF" 2>/dev/null |awk -F ' ' '{print $2}' 2>/dev/null |awk -F '-' '{print $1$2}' 2>/dev/null |awk -F '.' '{print $2$3}' 2>/dev/null) -version_url="https://raw.githubusercontent.com/vernesong/OpenClash/master/core_version" +HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) +PROXY_ADDR="127.0.0.1" +VERSION_URL="https://raw.githubusercontent.com/vernesong/OpenClash/master/core_version" if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{print $2}')" ]; then - curl -sL --connect-timeout 10 --retry 2 "$version_url" -o $LAST_OPVER >/dev/null 2>&1 + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT "$VERSION_URL" -o $LAST_OPVER >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 "$VERSION_URL" -o $LAST_OPVER >/dev/null 2>&1 + fi if [ "$?" -eq "0" ] && [ -s "$LAST_OPVER" ]; then echo "CheckTime:$CKTIME" >>$LAST_OPVER else diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh index c23a3aa6a1..174b4c30c0 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh @@ -7,14 +7,14 @@ START_LOG="/tmp/openclash_start.log" LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/tmp/openclash.log" CPU_MODEL=$(uci get openclash.config.core_version 2>/dev/null) -http_port=$(uci get openclash.config.http_port 2>/dev/null) -proxy_addr="127.0.0.1" +HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) +PROXY_ADDR="127.0.0.1" if [ "$(/etc/openclash/clash -v 2>/dev/null |awk -F ' ' '{print $2}')" != "$(sed -n 1p /tmp/clash_last_version 2>/dev/null)" ] || [ -z "$(/etc/openclash/clash -v 2>/dev/null |awk -F ' ' '{print $2}')" ] || [ ! -f /etc/openclash/clash ]; then if [ "$CPU_MODEL" != 0 ]; then echo "开始下载 OpenClash 内核..." >$START_LOG - if [ ! -z "$(pidof clash|sed 's/$//g')" ]; then - curl -sL --connect-timeout 10 --retry 2 -x http://$proxy_addr:$http_port https://github.com/vernesong/OpenClash/releases/download/Clash/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz >/dev/null 2>&1 + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT https://github.com/vernesong/OpenClash/releases/download/Clash/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz >/dev/null 2>&1 else curl -sL --connect-timeout 10 --retry 2 https://github.com/vernesong/OpenClash/releases/download/Clash/clash-"$CPU_MODEL".tar.gz -o /tmp/clash.tar.gz >/dev/null 2>&1 fi diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_game_rule.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_game_rule.sh index c4468f99ee..b2d4bc069f 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_game_rule.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_game_rule.sh @@ -10,7 +10,13 @@ TMP_RULE_DIR="/tmp/$RULE_FILE_NAME" LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/tmp/openclash.log" - curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/"$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" >/dev/null 2>&1 + HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) + PROXY_ADDR="127.0.0.1" + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/"$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/rules/"$DOWNLOAD_PATH" -o "$TMP_RULE_DIR" >/dev/null 2>&1 + fi if [ "$?" -eq "0" ] && [ "$(ls -l $TMP_RULE_DIR |awk '{print $5}')" -ne 0 ]; then cmp -s $TMP_RULE_DIR $RULE_FILE_DIR if [ "$?" -ne "0" ]; then diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh index 040599205a..2157491a52 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh @@ -3,47 +3,65 @@ LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/tmp/openclash.log" echo "开始获取使用中的第三方规则名称..." >$START_LOG - rule_source=$(uci get openclash.config.rule_source 2>/dev/null) + RUlE_SOURCE=$(uci get openclash.config.rule_source 2>/dev/null) + HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) + PROXY_ADDR="127.0.0.1" echo "开始下载使用中的第三方规则..." >$START_LOG - if [ "$rule_source" = "lhie1" ]; then - curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/lhie1/Rules/master/Clash/Rule.yml -o /tmp/rules.yaml >/dev/null 2>&1 + if [ "$RUlE_SOURCE" = "lhie1" ]; then + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT https://raw.githubusercontent.com/lhie1/Rules/master/Clash/Rule.yaml -o /tmp/rules.yaml >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/lhie1/Rules/master/Clash/Rule.yaml -o /tmp/rules.yaml >/dev/null 2>&1 + fi sed -i '1i Rule:' /tmp/rules.yaml - elif [ "$rule_source" = "ConnersHua" ]; then - curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/Pro.yaml -o /tmp/rules.yaml >/dev/null 2>&1 - sed -i -n '/^Rule:/,$p' /tmp/rules.yaml - elif [ "$rule_source" = "ConnersHua_return" ]; then - curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/BacktoCN.yaml -o /tmp/rules.yaml >/dev/null 2>&1 - sed -i -n '/^Rule:/,$p' /tmp/rules.yaml + elif [ "$RUlE_SOURCE" = "ConnersHua" ]; then + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/Pro.yaml -o /tmp/rules.yaml >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/Pro.yaml -o /tmp/rules.yaml >/dev/null 2>&1 + fi + sed -i -n '/^Rule:/,$p' /tmp/rules.yaml 2>/dev/null + sed -i -n '/^rules:/,$p' /tmp/rules.yaml 2>/dev/null + sed -i "/^rules:/c\^Rule:" /tmp/rules.yaml 2>/dev/null + elif [ "$RUlE_SOURCE" = "ConnersHua_return" ]; then + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/BacktoCN.yaml -o /tmp/rules.yaml >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/BacktoCN.yaml -o /tmp/rules.yaml >/dev/null 2>&1 + fi + sed -i -n '/^Rule:/,$p' /tmp/rules.yaml 2>/dev/null + sed -i -n '/^rules:/,$p' /tmp/rules.yaml 2>/dev/null + sed -i "/^rules:/c\^Rule:" /tmp/rules.yaml 2>/dev/null fi - if [ "$?" -eq "0" ] && [ "$rule_source" != 0 ] && [ -s "/tmp/rules.yaml" ]; then + if [ "$?" -eq "0" ] && [ "$RUlE_SOURCE" != 0 ] && [ -s "/tmp/rules.yaml" ]; then echo "下载成功,开始预处理规则文件..." >$START_LOG - sed -i "/^Rule:/a\##source:${rule_source}" /tmp/rules.yaml >/dev/null 2>&1 + sed -i "/^Rule:/a\##source:${RUlE_SOURCE}" /tmp/rules.yaml >/dev/null 2>&1 echo "检查下载的规则文件是否有更新..." >$START_LOG - cmp -s /etc/openclash/"$rule_source".yaml /tmp/rules.yaml + cmp -s /etc/openclash/"$RUlE_SOURCE".yaml /tmp/rules.yaml if [ "$?" -ne "0" ]; then echo "检测到下载的规则文件有更新,开始替换..." >$START_LOG - mv /tmp/rules.yaml /etc/openclash/"$rule_source".yaml >/dev/null 2>&1 - sed -i '/^Rule:/a\##updated' /etc/openclash/"$rule_source".yaml >/dev/null 2>&1 + mv /tmp/rules.yaml /etc/openclash/"$RUlE_SOURCE".yaml >/dev/null 2>&1 + sed -i '/^Rule:/a\##updated' /etc/openclash/"$RUlE_SOURCE".yaml >/dev/null 2>&1 echo "替换成功,重新加载 OpenClash 应用新规则..." >$START_LOG /etc/init.d/openclash reload 2>/dev/null - echo "${LOGTIME} Other Rules Update Successful" >>$LOG_FILE + echo "${LOGTIME} Other Rules 【$RUlE_SOURCE】 Update Successful" >>$LOG_FILE else echo "检测到下载的规则文件没有更新,停止继续操作..." >$START_LOG rm -rf /tmp/rules.yaml >/dev/null 2>&1 - echo "${LOGTIME} Updated Other Rules No Change, Do Nothing" >>$LOG_FILE + echo "${LOGTIME} Updated Other Rules 【$RUlE_SOURCE】 No Change, Do Nothing" >>$LOG_FILE sleep 10 echo "" >$START_LOG fi - elif [ "$rule_source" = 0 ]; then + elif [ "$RUlE_SOURCE" = 0 ]; then echo "未启用第三方规则,更新程序终止!" >$START_LOG rm -rf /tmp/rules.yaml >/dev/null 2>&1 - echo "${LOGTIME} Other Rules Not Enable, Update Stop" >>$LOG_FILE + echo "${LOGTIME} Other Rules 【$RUlE_SOURCE】 Not Enable, Update Stop" >>$LOG_FILE sleep 10 echo "" >$START_LOG else echo "第三方规则下载失败,请检查网络或稍后再试!" >$START_LOG rm -rf /tmp/rules.yaml >/dev/null 2>&1 - echo "${LOGTIME} Other Rules Update Error" >>$LOG_FILE + echo "${LOGTIME} Other Rules 【$RUlE_SOURCE】 Update Error" >>$LOG_FILE sleep 10 echo "" >$START_LOG fi diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh index 115d716bc2..7379cdbe61 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh @@ -8,13 +8,13 @@ LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/tmp/openclash.log" LAST_OPVER="/tmp/openclash_last_version" LAST_VER=$(sed -n 1p "$LAST_OPVER" 2>/dev/null |sed "s/^v//g") -http_port=$(uci get openclash.config.http_port 2>/dev/null) -proxy_addr="127.0.0.1" +HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) +PROXY_ADDR="127.0.0.1" if [ "$(sed -n 1p /etc/openclash/openclash_version 2>/dev/null)" != "$(sed -n 1p $LAST_OPVER 2>/dev/null)" ] && [ -f "$LAST_OPVER" ]; then echo "开始下载 OpenClash-$LAST_VER ..." >$START_LOG - if [ ! -z "$(pidof clash|sed 's/$//g')" ]; then - curl -sL --connect-timeout 10 --retry 5 -x http://$proxy_addr:$http_port https://github.com/vernesong/OpenClash/releases/download/v"$LAST_VER"/luci-app-openclash_"$LAST_VER"_all.ipk -o /tmp/openclash.ipk >/dev/null 2>&1 + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 5 -x http://$PROXY_ADDR:$HTTP_PORT https://github.com/vernesong/OpenClash/releases/download/v"$LAST_VER"/luci-app-openclash_"$LAST_VER"_all.ipk -o /tmp/openclash.ipk >/dev/null 2>&1 else curl -sL --connect-timeout 10 --retry 5 https://github.com/vernesong/OpenClash/releases/download/v"$LAST_VER"/luci-app-openclash_"$LAST_VER"_all.ipk -o /tmp/openclash.ipk >/dev/null 2>&1 fi diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh index fe0ae6d298..005990924c 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh @@ -1,9 +1,15 @@ #!/bin/sh CKTIME=$(date "+%Y-%m-%d-%H") LAST_OPVER="/tmp/openclash_last_version" -version_url="https://raw.githubusercontent.com/vernesong/OpenClash/master/version" +HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) +PROXY_ADDR="127.0.0.1" +VERSION_URL="https://raw.githubusercontent.com/vernesong/OpenClash/master/version" if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{print $2}')" ]; then - curl -sL --connect-timeout 10 --retry 2 "$version_url" -o $LAST_OPVER >/dev/null 2>&1 + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT "$VERSION_URL" -o $LAST_OPVER >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 "$VERSION_URL" -o $LAST_OPVER >/dev/null 2>&1 + fi if [ "$?" -eq "0" ] && [ "$(ls -l $LAST_OPVER 2>/dev/null |awk '{print int($5)}')" -gt 0 ]; then if [ "$(sed -n 1p /etc/openclash/openclash_version 2>/dev/null)" = "$(sed -n 1p $LAST_OPVER 2>/dev/null)" ]; then sed -i "/^https:/i\CheckTime:${CKTIME}" "$LAST_OPVER" 2>/dev/null diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh index 082e397d74..dc2b1a9e57 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh @@ -46,14 +46,9 @@ echo "开始更新【$CONFIG_NAME】的策略组配置..." >$START_LOG exit 0 } -#判断各个区位置 -group_len=$(sed -n '/^ \{0,\}Proxy Group:/=' "$CONFIG_FILE" 2>/dev/null) -provider_len=$(sed -n '/^ \{0,\}proxy-provider:/=' "$CONFIG_FILE" 2>/dev/null) -if [ "$provider_len" -ge "$group_len" ]; then - awk '/Proxy Group:/,/proxy-provider:/{print}' "$CONFIG_FILE" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1 -else - awk '/Proxy Group:/,/Rule:/{print}' "$CONFIG_FILE" 2>/dev/null |sed 's/\"//g' 2>/dev/null |sed "s/\'//g" 2>/dev/null |sed 's/\t/ /g' 2>/dev/null >/tmp/yaml_group.yaml 2>&1 -fi +cp /tmp/Proxy_Group /tmp/yaml_group.yaml +sed -i '/DIRECT/d' /tmp/yaml_group.yaml 2>/dev/null +sed -i '/REJECT/d' /tmp/yaml_group.yaml 2>/dev/null if [ "$servers_update" -ne "1" ] || [ "$servers_if_update" != "1" ] || [ -z "$(grep "config groups" "$CFG_FILE")" ]; then echo "正在删除旧配置..." >$START_LOG diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_name_get.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_name_get.sh index ec1e9bc47e..d08e8b69d6 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_name_get.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_groups_name_get.sh @@ -13,30 +13,43 @@ fi if [ -f "$CFG_FILE" ]; then #检查关键字避免后续操作出错 - [ ! -z "$(grep "^ \{0,\}'Proxy':" "$CFG_FILE")" ] || [ ! -z "$(grep '^ \{0,\}"Proxy":' "$CFG_FILE")" ] && { - sed -i "/^ \{0,\}\'Proxy\':/c\Proxy:" "$CFG_FILE" - sed -i '/^ \{0,\}\"Proxy\":/c\Proxy:' "$CFG_FILE" - } + #proxies + sed -i "/^ \{0,\}\'Proxy\':/c\Proxy:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"Proxy\":/c\Proxy:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{1,\}Proxy:/c\Proxy:" "$CFG_FILE" 2>/dev/null + [ -z "$(grep "^Proxy:" "$CFG_FILE")" ] && { + sed -i "s/^\'proxies\':/Proxy:/" "$CFG_FILE" 2>/dev/null + sed -i 's/^\"proxies\":/Proxy:/' "$CFG_FILE" 2>/dev/null + sed -i "s/^proxies:/Proxy:/" "$CFG_FILE" 2>/dev/null + } - [ ! -z "$(grep "^ \{0,\}'proxy-provider':" "$CFG_FILE")" ] || [ ! -z "$(grep '^ \{0,\}"proxy-provider":' "$CFG_FILE")" ] && { - sed -i "/^ \{0,\}\'proxy-provider\:'/c\proxy-provider:" "$3" - sed -i '/^ \{0,\}\"proxy-provider\":/c\proxy-provider:' "$3" - } - - [ ! -z "$(grep "^ \{0,\}'Proxy Group':" "$CFG_FILE")" ] || [ ! -z "$(grep '^ \{0,\}"Proxy Group":' "$CFG_FILE")" ] && { - sed -i "/^ \{0,\}\'Proxy Group\':/c\Proxy Group:" "$CFG_FILE" - sed -i '/^ \{0,\}\"Proxy Group\":/c\Proxy Group:' "$CFG_FILE" - } - - [ ! -z "$(grep "^ \{0,\}'Rule':" "$CFG_FILE")" ] || [ ! -z "$(grep '^ \{0,\}"Rule":' "$CFG_FILE")" ] && { - sed -i "/^ \{0,\}\'Rule\':/c\Rule:" "$CFG_FILE" - sed -i '/^ \{0,\}\"Rule\":/c\Rule:' "$CFG_FILE" - } - - [ ! -z "$(grep "^ \{0,\}'dns':" "$CFG_FILE")" ] || [ ! -z "$(grep '^ \{0,\}"dns":' "$CFG_FILE")" ] && { - sed -i "/^ \{0,\}\'dns\':/c\dns:" "$CFG_FILE" - sed -i '/^ \{0,\}\"dns\":/c\dns:' "$CFG_FILE" - } + #proxy-providers + sed -i "/^ \{0,\}\'proxy-provider\':/c\proxy-provider:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"proxy-provider\":/c\proxy-provider:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{1,\}proxy-provider:/c\proxy-provider:" "$CFG_FILE" 2>/dev/null + sed -i "/^ \{0,\}\'proxy-providers\':/c\proxy-provider:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"proxy-providers\":/c\proxy-provider:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{0,\}proxy-providers:/c\proxy-provider:" "$CFG_FILE" 2>/dev/null + + #proxy-groups + sed -i "/^ \{0,\}\'Proxy Group\':/c\Proxy Group:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"Proxy Group\":/c\Proxy Group:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{1,\}Proxy Group:/c\Proxy Group:" "$CFG_FILE" 2>/dev/null + sed -i "/^ \{0,\}\'proxy-groups\':/c\Proxy Group:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"proxy-groups\":/c\Proxy Group:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{0,\}proxy-groups:/c\Proxy Group:" "$CFG_FILE" 2>/dev/null + + #rules + sed -i "/^ \{0,\}\'Rule\':/c\Rule:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"Rule\":/c\Rule:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{1,\}Rule:/c\Rule:" "$CFG_FILE" 2>/dev/null + sed -i "/^ \{0,\}\'rules\':/c\Rule:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"rules\":/c\Rule:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{0,\}rules:/c\Rule:" "$CFG_FILE" 2>/dev/null + + sed -i "/^ \{0,\}\'dns\':/c\dns:" "$CFG_FILE" 2>/dev/null + sed -i '/^ \{0,\}\"dns\":/c\dns:' "$CFG_FILE" 2>/dev/null + sed -i "/^ \{1,\}dns:/c\dns:" "$CFG_FILE" 2>/dev/null #判断各个区位置 group_len=$(sed -n '/^ \{0,\}Proxy Group:/=' "$CONFIG_FILE" 2>/dev/null) diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_rules_change.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_rules_change.sh index d2eef83159..28ee1e21c1 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_rules_change.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yml_rules_change.sh @@ -150,6 +150,6 @@ fi if [ ! -z "$(grep "^ \{0,\}- IP-CIDR,198.18.0.1/16" "$4")" ]; then sed -i "/^ \{0,\}- IP-CIDR,198.18.0.1\/16/c\- IP-CIDR,198.18.0.1\/16,REJECT,no-resolve" "$4" else - sed -i "/^ \{0,\}- GEOIP/i\- IP-CIDR,198.18.0.1\/16,REJECT,no-resolve" "$4" + sed -i '1,/^ \{0,\}- GEOIP/{/^ \{0,\}- GEOIP/s/^ \{0,\}- GEOIP/- IP-CIDR,198.18.0.1\/16,REJECT,no-resolve\n&/}' "$4" fi fi \ No newline at end of file