From 50539229de8ae6f213de6e3719d7e724ff6a0717 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Tue, 26 May 2020 20:24:46 +0800 Subject: [PATCH] luci-app-clash: bump to 1.6.9 --- package/ntlf9t/luci-app-clash/Makefile | 14 ++++-- .../luasrc/controller/clash.lua | 20 +++++--- .../luasrc/model/cbi/clash/client.lua | 2 +- .../luasrc/model/cbi/clash/create.lua | 2 +- .../luasrc/model/cbi/clash/dns.lua | 2 +- .../luasrc/model/cbi/clash/geoip.lua | 2 +- .../luasrc/model/cbi/clash/other.lua | 4 +- .../luasrc/model/cbi/clash/port.lua | 2 +- .../luasrc/model/cbi/clash/update.lua | 2 +- .../luasrc/view/clash/status.htm | 40 ++++++++-------- .../luasrc/view/clash/status_log.htm | 22 +++------ .../luci-app-clash/root/etc/init.d/clash | 16 +++---- .../root/usr/share/clash/backup.sh | 11 +++-- .../root/usr/share/clash/clash.sh | 6 +-- .../root/usr/share/clash/clash_game_rule.sh | 2 +- .../root/usr/share/clash/dashboard/index.html | 2 +- .../js/1.bundle.1560b07adc97ac0ac265.min.js | 2 + .../js/1.bundle.693efc9234a08d249710.min.js | 2 - .../js/bundle.1560b07adc97ac0ac265.min.js | 1 + .../js/bundle.693efc9234a08d249710.min.js | 1 - ...9710.css => main.1560b07adc97ac0ac265.css} | 0 .../root/usr/share/clash/luci_version | 2 +- .../root/usr/share/clash/proxy.sh | 2 +- .../root/usr/share/clash/restore.sh | 46 +++++++++++-------- .../root/usr/share/clash/rule.sh | 2 +- .../clash/yacd/8.7958f6e20b89d91ec605.js | 1 + .../clash/yacd/8.cfac5eece126ce875152.js | 1 - .../clash/yacd/app.1de83e4934f843dc8d9b.js | 2 + ...> app.1de83e4934f843dc8d9b.js.LICENSE.txt} | 0 ...8f8e8.css => app.6c8a97d4cbae5f4b8f38.css} | 19 ++++---- .../clash/yacd/app.97da0bf63bfa93de767f.js | 2 - .../yacd/core-js~app.b214178cdb71012cd622.js | 1 + .../yacd/core-js~app.e768d5b23b7e7ef5d68d.js | 1 - .../root/usr/share/clash/yacd/index.html | 43 +---------------- .../yacd/proxies.98cabc7dc53e642492d1.js | 1 + .../yacd/proxies.bdb3659841c50b543b0e.js | 1 - .../yacd/proxies.cea47222a686cf441cb9.css | 7 --- .../yacd/proxies.f2fb2adff629251cabb9.css | 9 ++++ ...e.js => react~app.e2d573992419eb24e61b.js} | 4 +- ...t~app.e2d573992419eb24e61b.js.LICENSE.txt} | 0 .../root/usr/share/clash/yacd/report.html | 8 ++-- .../clash/yacd/rules.5123c4f00bc3b0a54628.js | 1 + .../clash/yacd/rules.efdab873e544c5738c5c.js | 1 - ...a8e.js => runtime.19a1a1c098f3d2fbd54e.js} | 2 +- .../vendors~chartjs.7079553c634b376d7c1c.js | 2 - .../vendors~chartjs.fa4d4e9c5ca3297a0d20.js | 2 + ...artjs.fa4d4e9c5ca3297a0d20.js.LICENSE.txt} | 0 .../vendors~proxies.0ab0478edefe25bc30a4.js | 1 - .../vendors~proxies.cd3f974bfcc521d59a74.js | 1 + 49 files changed, 144 insertions(+), 173 deletions(-) create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.693efc9234a08d249710.min.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/bundle.1560b07adc97ac0ac265.min.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/bundle.693efc9234a08d249710.min.js rename package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/{main.693efc9234a08d249710.css => main.1560b07adc97ac0ac265.css} (100%) create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/8.7958f6e20b89d91ec605.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/8.cfac5eece126ce875152.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/app.1de83e4934f843dc8d9b.js rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{app.97da0bf63bfa93de767f.js.LICENSE.txt => app.1de83e4934f843dc8d9b.js.LICENSE.txt} (100%) rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{app.f7858f54039721e8f8e8.css => app.6c8a97d4cbae5f4b8f38.css} (53%) delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/app.97da0bf63bfa93de767f.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/core-js~app.b214178cdb71012cd622.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/core-js~app.e768d5b23b7e7ef5d68d.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.98cabc7dc53e642492d1.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.bdb3659841c50b543b0e.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.cea47222a686cf441cb9.css create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.f2fb2adff629251cabb9.css rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{react~app.71e146262a2c1f21d27e.js => react~app.e2d573992419eb24e61b.js} (87%) rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{react~app.71e146262a2c1f21d27e.js.LICENSE.txt => react~app.e2d573992419eb24e61b.js.LICENSE.txt} (100%) create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/rules.5123c4f00bc3b0a54628.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/rules.efdab873e544c5738c5c.js rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{runtime.c72e8723983b31413a8e.js => runtime.19a1a1c098f3d2fbd54e.js} (68%) delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/vendors~chartjs.7079553c634b376d7c1c.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/vendors~chartjs.fa4d4e9c5ca3297a0d20.js rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{vendors~chartjs.7079553c634b376d7c1c.js.LICENSE.txt => vendors~chartjs.fa4d4e9c5ca3297a0d20.js.LICENSE.txt} (100%) delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/vendors~proxies.0ab0478edefe25bc30a4.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/vendors~proxies.cd3f974bfcc521d59a74.js diff --git a/package/ntlf9t/luci-app-clash/Makefile b/package/ntlf9t/luci-app-clash/Makefile index b8802b3b63..ad7f220988 100644 --- a/package/ntlf9t/luci-app-clash/Makefile +++ b/package/ntlf9t/luci-app-clash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-clash -PKG_VERSION:=1.6.8 +PKG_VERSION:=1.6.9b PKG_MAINTAINER:=frainzy1477 @@ -12,7 +12,7 @@ define Package/luci-app-clash CATEGORY:=LuCI SUBMENU:=3. Applications TITLE:=LuCI app for clash - DEPENDS:=+luci-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +openssl-util +curl +jsonfilter +ca-certificates +iptables-mod-tproxy + DEPENDS:=+luci-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +curl +jsonfilter +ca-certificates +iptables-mod-tproxy PKGARCH:=all MAINTAINER:=frainzy1477 endef @@ -101,6 +101,8 @@ define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/lib/lua/luci $(INSTALL_DIR) $(1)/usr/share/ $(INSTALL_DIR) $(1)/usr/share/clash + $(INSTALL_DIR) $(1)/usr/rpcd + $(INSTALL_DIR) $(1)/usr/rpcd/acl.d $(INSTALL_DIR) $(1)/usr/share/clash/rules $(INSTALL_DIR) $(1)/usr/share/clash/rules/g_rules $(INSTALL_DIR) $(1)/usr/share/clash/dashboard @@ -137,11 +139,13 @@ define Package/$(PKG_NAME)/install $(INSTALL_BIN) ./root/usr/share/clash/logstatus_check $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/clash.txt $(1)/usr/share/clash/ + $(INSTALL_BIN) ./root/usr/rpcd/acl.d/luci-app-clash.json $(1)/usr/rpcd/acl.d/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/index.html $(1)/usr/share/clash/dashboard/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.693efc9234a08d249710.css $(1)/usr/share/clash/dashboard/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.1560b07adc97ac0ac265.css $(1)/usr/share/clash/dashboard/ $(INSTALL_BIN) ./root/usr/share/clash/dashboard/img/ffac0fa1d89f15922b4594863b8b32e9.png $(1)/usr/share/clash/dashboard/img/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.693efc9234a08d249710.min.js $(1)/usr/share/clash/dashboard/js/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.693efc9234a08d249710.min.js $(1)/usr/share/clash/dashboard/js/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js $(1)/usr/share/clash/dashboard/js/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.1560b07adc97ac0ac265.min.js $(1)/usr/share/clash/dashboard/js/ $(INSTALL_BIN) ./root/usr/share/clash/yacd/* $(1)/usr/share/clash/yacd/ $(INSTALL_DATA) ./luasrc/clash.lua $(1)/usr/lib/lua/luci/ diff --git a/package/ntlf9t/luci-app-clash/luasrc/controller/clash.lua b/package/ntlf9t/luci-app-clash/luasrc/controller/clash.lua index 27b1731221..611cd6bbda 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/controller/clash.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/controller/clash.lua @@ -11,7 +11,9 @@ function index() return end - entry({"admin", "services", "clash"},alias("admin", "services", "clash", "overview"), _("Clash"), 10).dependent = false + entry({"admin", "services", "clash"},alias("admin", "services", "clash", "overview"), _("Clash"), 5) + page.dependent = true + page.acl_depends = { "luci-app-openclash" } entry({"admin", "services", "clash", "overview"},cbi("clash/overview"),_("Overview"), 10).leaf = true entry({"admin", "services", "clash", "client"},cbi("clash/client"),_("Client"), 20).leaf = true @@ -62,6 +64,13 @@ end local fss = require "luci.clash" +local function uhttp_port() + local uhttp_port = luci.sys.exec("uci get uhttpd.main.listen_http |awk -F ':' '{print $NF}'") + if uhttp_port ~= "80" then + return ":" .. uhttp_port + end +end + local function download_rule() local filename = luci.http.formvalue("filename") @@ -82,7 +91,7 @@ function action_update_rule() end function action_update() - luci.sys.exec("kill $(pgrep /usr/share/clash/update.sh) ; (bash /usr/share/clash/update.sh >/tmp/clash.txt 2>&1) &") + luci.sys.exec("kill $(pgrep /usr/share/clash/update.sh) ; (bash /usr/share/clash/update.sh >>/usr/share/clash/clash.txt 2>&1) &") end @@ -310,6 +319,7 @@ function action_status() web = is_web(), clash = is_running(), localip = localip(), + uhttp_port = uhttp_port(), dash_port = dash_port(), current_version = current_version(), clash_core = clash_core(), @@ -382,15 +392,11 @@ function check_geoip_log() local fdp=tonumber(fs.readfile("/var/run/geoiplog")) or 0 local f=io.open("/tmp/geoip_update.txt", "r+") f:seek("set",fdp) - local a=f:read(2048000) or "" + local a=f:read(2048000) or "." fdp=f:seek() fs.writefile("/var/run/geoiplog",tostring(fdp)) f:close() -if fs.access("/var/run/geoip_update") then luci.http.write(a) -else - luci.http.write(a.."\0") -end end diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/client.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/client.lua index 00f8d68cad..821fff2ef6 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/client.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/client.lua @@ -48,7 +48,7 @@ o:value("1", translate("Enable")) o.description = translate("Set custom rules under Setting=>Others , will take effect when client start") o = s:option(Button, "Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputtitle = translate("Save & Apply") o.inputstyle = "apply" o.write = function() diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/create.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/create.lua index 7824cf6c19..43cd8c0079 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/create.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/create.lua @@ -28,7 +28,7 @@ o.description = translate("Download Rule") o.inputstyle = "reload" o.write = function() uci:commit("clash") - luci.sys.call("bash /usr/share/clash/rule.sh >>/tmp/clash.txt >/dev/null 2>&1 &") + luci.sys.call("bash /usr/share/clash/rule.sh >>/usr/share/clash/clash.txt >/dev/null 2>&1 &") HTTP.redirect(DISP.build_url("admin", "services", "clash", "create")) end diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/dns.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/dns.lua index 8f800eb21b..d784f94dbf 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/dns.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/dns.lua @@ -93,7 +93,7 @@ o:depends("tun_mode", 1) o = s:option(Button, "Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputtitle = translate("Save & Apply") o.inputstyle = "apply" o.write = function() diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/geoip.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/geoip.lua index 4656d2c2bb..fd69df1aa7 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/geoip.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/geoip.lua @@ -126,7 +126,7 @@ o.rmempty = true o=s:option(Button,"update_geoip") o.inputtitle = translate("Save & Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputstyle = "reload" o.write = function() m.uci:commit("clash") diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/other.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/other.lua index 4a9074f480..d077589bc6 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/other.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/other.lua @@ -25,7 +25,7 @@ o:value("24", translate("Every 24 Hours")) o.description = translate("Daily Server subscription update time. Only update config in use") o = s:option(Button, "Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputtitle = translate("Save & Apply") o.inputstyle = "apply" o.write = function() @@ -52,7 +52,7 @@ o.description = translate("Clear Log Time") o=s:option(Button,"clear_clear") o.inputtitle = translate("Save & Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputstyle = "reload" o.write = function() m.uci:commit("clash") diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/port.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/port.lua index 899bb15d91..abd9060553 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/port.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/port.lua @@ -87,7 +87,7 @@ o:value("error", "error") o:value("debug", "debug") o = s:option(Button, "Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputtitle = translate("Save & Apply") o.inputstyle = "apply" o.write = function() diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/update.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/update.lua index 271ca7dc61..b39626e02e 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/update.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/update.lua @@ -141,7 +141,7 @@ o:value("linux-mipsle-hardfloat") o=s:option(Button,"down_core") o.inputtitle = translate("Save & Apply") -o.title = translate("Save & Apply") +o.title = luci.util.pcdata(translate("Save & Apply")) o.inputstyle = "reload" o.write = function() k.uci:commit("clash") diff --git a/package/ntlf9t/luci-app-clash/luasrc/view/clash/status.htm b/package/ntlf9t/luci-app-clash/luasrc/view/clash/status.htm index 09b3216899..ade51ce68c 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/view/clash/status.htm +++ b/package/ntlf9t/luci-app-clash/luasrc/view/clash/status.htm @@ -63,13 +63,9 @@ let IP = { throw error; }), parseIPIpip: (ip, elID) => { - IP.get(`https://api.skk.moe/network/parseIp/ipip/v3/${ip}`, 'json') + IP.get(`https://qqwry.api.skk.moe/${ip}`, 'json') .then(resp => { - let x = ''; - for (let i of resp.data) { - x += (i !== '') ? `${i} ` : ''; - } - document.getElementById(elID).innerHTML = x; + document.getElementById(elID).innerHTML = resp.data.geo; //$$.getElementById(elID).innerHTML = `${resp.data.country} ${resp.data.regionName} ${resp.data.city} ${resp.data.isp}`; }) }, @@ -126,8 +122,8 @@ var HTTP = { } - function Load() - { + function Load() + { var tbip = document.getElementsByTagName('HEAD').item(0); var tbipScript= document.createElement("script"); tbipScript.async = "async"; @@ -137,7 +133,7 @@ var HTTP = { var sbip = document.getElementsByTagName('HEAD').item(0); var sbipScript= document.createElement("script"); sbipScript.async = "async"; - sbipScript.src='https://api.skk.moe/network/parseIp/ipip/v3'; + sbipScript.src='https://qqwry.api.skk.moe/'; sbip.appendChild( sbipScript); @@ -145,7 +141,11 @@ var HTTP = { const $$ = document; random = parseInt(Math.random() * 100000000); setTimeout("Load()",1000*8); - } + } + + + + var web = document.getElementById('_web'); var webb = document.getElementById('_webb'); var clash = document.getElementById('_clash'); @@ -160,14 +160,15 @@ var HTTP = { XHR.poll(1, '<%=luci.dispatcher.build_url("admin", "services", "clash", "status")%>', null, function(x, status) { if ( x && x.status == 200 ) { - web.innerHTML = status.clash ? '<%:DASHBOARD%>' : '<%:NOT RUNNING%>'; - webb.innerHTML = status.clash ? '<%:DASHBOARD%>' : '<%:NOT RUNNING%>'; + web.innerHTML = status.clash ? '<%:DASHBOARD%>' : '<%:NOT RUNNING%>'; + webb.innerHTML = status.clash ? '<%:DASHBOARD%>' : '<%:NOT RUNNING%>'; clash.innerHTML = status.clash ? '<%:RUNNING%> ' : '<%:NOT RUNNING%>'; ip.innerHTML = status.localip ? ''+status.localip+' ' : '<%:NOT SET%>'; port.innerHTML = status.dash_port ? ''+status.dash_port+' ' : '<%:NOT SET%>'; secret.innerHTML = status.dash_pass ? ''+status.dash_pass+' ' : '<%:NOT SET%>'; - emode.innerHTML = status.clash ? ''+status.e_mode+' ' : '<%:NOT RUNNING%>'; if(status.typeconf != 0 || status.typeconf != ''){ - conf.innerHTML = status.typeconf ? '' : '<%:NOT RUNNING%>'; + emode.innerHTML = status.clash ? ''+status.e_mode+' ' : '<%:NOT RUNNING%>'; + if(status.typeconf != 0 || status.typeconf != ''){ + conf.innerHTML = status.typeconf ? '' : '<%:NOT RUNNING%>'; } if(status.typeconf==1){ conf_path.innerHTML = status.clash ? '<%:SUBSCRIBE%> ' : '<%:NOT RUNNING%>'; @@ -306,19 +307,20 @@ var HTTP = {
-
× -

<%:If config does not show refresh page%>


- +
× +

<%:If config does not show refresh page%>


+
<%+cbi/valuefooter%> 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 fd1f715097..d7f85faacb 100644 --- a/package/ntlf9t/luci-app-clash/root/etc/init.d/clash +++ b/package/ntlf9t/luci-app-clash/root/etc/init.d/clash @@ -1,4 +1,4 @@ -#!/bin/sh /etc/rc.common +#!/bin/bash /etc/rc.common START=99 STOP=15 @@ -255,8 +255,8 @@ rules(){ if [ "${enable_udp}" -eq 1 ]; then - ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 - ip route add local default dev lo table "$PROXY_ROUTE_TABLE" + ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" + ip route add local 0.0.0.0/0 dev lo table "$PROXY_ROUTE_TABLE" iptables -t mangle -N clash iptables -t mangle -A clash -d 0.0.0.0/8 -j RETURN @@ -273,7 +273,7 @@ rules(){ done fi - iptables -t mangle -A clash -p udp -j TPROXY --on-port "${redir_port}" --tproxy-mark "$PROXY_FWMARK" + iptables -t mangle -A clash -p udp -j TPROXY --on-port "${redir_port}" --on-ip 0.0.0.0 --tproxy-mark "$PROXY_FWMARK" iptables -t mangle -A PREROUTING -p udp -j clash fi @@ -283,13 +283,11 @@ rules(){ if [ ! -z "${fake_ip_range}" ];then if [ "${enable_udp}" -eq 1 ]; then iptables -t nat -A OUTPUT -p tcp -d $fake_ip_range -j REDIRECT --to-ports "${redir_port}" - iptables -t mangle -A OUTPUT -p udp -d $fake_ip_range -j MARK --set-mark "$PROXY_FWMARK" + iptables -t mangle -A OUTPUT -p udp -d $fake_ip_range -j MARK --set-mark "$PROXY_FWMARK" fi else iptables -t nat -A OUTPUT -p tcp -d 198.18.0.1/16 -j REDIRECT --to-ports "${redir_port}" - if [ "${enable_udp}" -eq 1 ]; then - iptables -t mangle -A OUTPUT -p udp -d 198.18.0.1/16 -j MARK --set-mark "$PROXY_FWMARK" - fi + fi @@ -308,7 +306,7 @@ rules(){ fi done fi - ip6tables -t mangle -A clash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark "$PROXY_FWMARK" + ip6tables -t mangle -A clash -p udp -j TPROXY --on-port "$proxy_port" --on-ip 0.0.0.0 --tproxy-mark "$PROXY_FWMARK" ip6tables -t mangle -A PREROUTING -p udp -j clash fi diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/backup.sh b/package/ntlf9t/luci-app-clash/root/usr/share/clash/backup.sh index f60ba93e25..4a2184772d 100755 --- a/package/ntlf9t/luci-app-clash/root/usr/share/clash/backup.sh +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/backup.sh @@ -1,5 +1,5 @@ -#!/bin/bash /etc/rc.common -. /lib/functions.sh +#!/bin/sh +. /lib/functions.sh CURL_GROUP_CACHE="/usr/share/clashbackup/clash_gorup.json" CURL_NOW_CACHE="/usr/share/clashbackup/clash_now.json" @@ -9,10 +9,11 @@ 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) -curl -w %{http_code}"\n" -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X GET http://"$LAN_IP":"$PORT"/proxies > "$CURL_CACHE" 2>/dev/null -if [ "$(sed -n '$p' "$CURL_CACHE")" -eq "200" ]; then +curl -m 5 --retry 2 -w %{http_code}"\n" -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X GET http://"$LAN_IP":"$PORT"/proxies > "$CURL_CACHE" 2>/dev/null +if [ "$(sed -n '$p' "$CURL_CACHE" 2>/dev/null)" = "200" ]; then + mkdir -p /etc/openclash/history 2>/dev/null cat "$CURL_CACHE" |jsonfilter -e '@["proxies"][@.type="Selector"]["name"]' > "$CURL_GROUP_CACHE" 2>/dev/null cat "$CURL_CACHE" |jsonfilter -e '@["proxies"][@.type="Selector"]["now"]' > "$CURL_NOW_CACHE" 2>/dev/null - awk 'NR==FNR{a[i]=$0;i++}NR>FNR{print a[j]"#*#"$0;j++}' "$CURL_GROUP_CACHE" "$CURL_NOW_CACHE" > "$HISTORY_PATH" 2>/dev/null + awk 'NR==FNR{a[i]=$0;i++}NR>FNR{print a[j]"#*#"$0;j++}' "$CURL_GROUP_CACHE" "$CURL_NOW_CACHE" > "$HISTORY_PATH" 2>/dev/null fi rm -rf /usr/share/clashbackup/clash_*.json 2>/dev/null diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash.sh b/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash.sh index 078f64e7f8..b04a5cb0cb 100755 --- a/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash.sh +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash.sh @@ -48,14 +48,14 @@ else sleep 1 if [ "$subtype" = "clash" ];then - wget -c4 --no-check-certificate --user-agent="Clash/OpenWRT" $clash_url -O 2>&1 >1 $CONFIG_YAML + curl -sL --connect-timeout 10 --retry 2 "$clash_url" -O 2>&1 >1 $CONFIG_YAML if [ "$?" -eq "0" ]; then echo "${config_name}.yaml#$clash_url#$subtype" >>/usr/share/clashbackup/confit_list.conf fi fi if [ "$subtype" = "ssr2clash" ];then - wget -c4 --no-check-certificate --user-agent="Clash/OpenWRT" "https://ssrsub2clashr.herokuapp.com/ssrsub2clash?sub=$ssr_url" -O 2>&1 >1 $CONFIG_YAML + curl -sL --connect-timeout 10 --retry 2 "https://ssrsub2clashr.herokuapp.com/ssrsub2clash?sub=$ssr_url" -O 2>&1 >1 $CONFIG_YAML if [ "$?" -eq "0" ]; then echo "${config_name}.yaml#$ssr_url#$subtype" >>/usr/share/clashbackup/confit_list.conf CONFIG_YAMLL="/tmp/conf" @@ -100,7 +100,7 @@ else fi if [ "$subtype" = "v2clash" ];then - wget -c4 --no-check-certificate --user-agent="Clash/OpenWRT" "https://tgbot.lbyczf.com/v2rayn2clash?url=$v2_url" -O 2>&1 >1 $CONFIG_YAML + curl -sL --connect-timeout 10 --retry 2 "https://tgbot.lbyczf.com/v2rayn2clash?url=$v2_url" -O 2>&1 >1 $CONFIG_YAML if [ "$?" -eq "0" ]; then echo "${config_name}.yaml#$v2_url#$subtype" >>/usr/share/clashbackup/confit_list.conf fi diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash_game_rule.sh b/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash_game_rule.sh index b340d1f881..bace28b64d 100755 --- a/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash_game_rule.sh +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/clash_game_rule.sh @@ -10,7 +10,7 @@ fi RULE_FILE_DIR="/usr/share/clash/rules/g_rules/$RULE_FILE_NAME" TMP_RULE_DIR="/tmp/$RULE_FILE_NAME" - LOG_FILE="/tmp/clash.txt" + LOG_FILE="/usr/share/clash/clash.txt" REAL_LOG="/usr/share/clash/clash_real.txt" diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/index.html b/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/index.html index b27dfa3088..31bd38449d 100644 --- a/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/index.html +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/index.html @@ -1 +1 @@ -Clash Dashboard
\ No newline at end of file +Clash Dashboard
\ No newline at end of file diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js b/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js new file mode 100644 index 0000000000..2b77de28eb --- /dev/null +++ b/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js @@ -0,0 +1,2 @@ +/*! For license information please see 1.bundle.1560b07adc97ac0ac265.min.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(e,t,n){"use strict";e.exports=n(50)},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},,,,function(e,t,n){e.exports=n(54)()},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(51)},function(e,t,n){var r=n(39)(Object,"create");e.exports=r},function(e,t,n){var r=n(109);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(115);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(38),o=n(88);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(22).Symbol;e.exports=r},function(e,t,n){var r=n(85),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",o="day",i="week",a="month",u="quarter",l="year",s=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,c=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,f=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},d={s:f,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+f(r,2,"0")+":"+f(o,2,"0")},m:function(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,a),o=t-r<0,i=e.clone().add(n+(o?-1:1),a);return Number(-(n+(t-r)/(o?r-i:i-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(s){return{M:a,y:l,w:i,d:o,D:"date",h:r,m:n,s:t,ms:e,Q:u}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},p={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},h="en",m={};m[h]=p;var v=function(e){return e instanceof w},g=function(e,t,n){var r;if(!e)return h;if("string"==typeof e)m[e]&&(r=e),t&&(m[e]=t,r=e);else{var o=e.name;m[o]=e,r=o}return!n&&r&&(h=r),r||!n&&h},y=function(e,t,n){if(v(e))return e.clone();var r=t?"string"==typeof t?{format:t,pl:n}:t:{};return r.date=e,new w(r)},b=d;b.l=g,b.i=v,b.w=function(e,t){return y(e,{locale:t.$L,utc:t.$u,$offset:t.$offset})};var w=function(){function f(e){this.$L=this.$L||g(e.locale,null,!0),this.parse(e)}var d=f.prototype;return d.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(s);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(t)}(e),this.init()},d.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},d.$utils=function(){return b},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(e,t){var n=y(e);return this.startOf(t)<=n&&n<=this.endOf(t)},d.isAfter=function(e,t){return y(e)=0;d--){var p=o[d];"."===p?c(o,d):".."===p?(c(o,d),f++):f&&(c(o,d),f--)}if(!u)for(;f--;f)o.unshift("..");!u||""===o[0]||o[0]&&s(o[0])||o.unshift("");var h=o.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function d(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var p=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=d(t),o=d(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var h=function(e,t){if(!e)throw new Error("Invariant failed")};function m(e){return"/"===e.charAt(0)?e:"/"+e}function v(e){return"/"===e.charAt(0)?e.substr(1):e}function g(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function y(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function b(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function w(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(l.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=f(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function x(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=w(e,t,d(),g.location);c.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(g.entries[g.index]=r,f({action:"REPLACE",location:r}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=g.index+e;return t>=0&&t=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(i)})),e.exports=l}).call(this,n(65))},function(e,t,n){"use strict";var r=n(5),o=n(67),i=n(30),a=n(69),u=n(72),l=n(73),s=n(34);e.exports=function(e){return new Promise((function(t,c){var f=e.data,d=e.headers;r.isFormData(f)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";d.Authorization="Basic "+btoa(h+":"+m)}var v=a(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),i(v,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?u(p.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:e,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(s(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var g=n(74),y=(e.withCredentials||l(v))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;y&&(d[e.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(b){if("json"!==e.responseType)throw b}"function"==typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),c(e),p=null)})),void 0===f&&(f=null),p.send(f)}))}},function(e,t,n){"use strict";var r=n(68);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,(function(e){void 0!==t[e]&&(n[e]=t[e])})),r.forEach(i,(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):void 0!==t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):void 0!==e[o]&&(n[o]=e[o])})),r.forEach(a,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}));var u=o.concat(i).concat(a),l=Object.keys(t).filter((function(e){return-1===u.indexOf(e)}));return r.forEach(l,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,o="~";function i(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function u(e,t,n,r,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new a(n,r||e,i),l=o?o+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function l(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function s(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(o=!1)),s.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(o?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=o?o+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,i=n.length,a=new Array(i);rO.length&&O.push(e)}function z(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var l=!1;if(null===t)l=!0;else switch(u){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return r(o,t,""===n?"."+A(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s