From d9b0a6bc9d21c5dcdd8ae15c1a9eb3931d982b71 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sun, 29 Mar 2020 18:01:06 +0800 Subject: [PATCH] luci-app-clash: sync with upstream source --- package/ntlf9t/luci-app-clash/Makefile | 10 +- .../luasrc/controller/clash.lua | 2 +- .../luasrc/model/cbi/clash/client.lua | 6 - .../luasrc/model/cbi/clash/create.lua | 5 - .../luasrc/model/cbi/clash/dns.lua | 2 +- .../luasrc/model/cbi/clash/groups.lua | 1 + .../luasrc/model/cbi/clash/import.lua | 9 +- .../luasrc/model/cbi/clash/other.lua | 15 +- .../model/cbi/clash/provider-config.lua | 4 +- .../luasrc/model/cbi/clash/servers-config.lua | 21 +++ .../luci-app-clash/root/etc/config/clash | 1 - .../luci-app-clash/root/etc/init.d/clash | 45 +++--- .../root/usr/share/clash/dashboard/index.html | 4 +- .../js/1.bundle.9ba3dbeae71a3cb9926b.min.js | 2 - .../js/1.bundle.ad0717ae3407e246a9ab.min.js | 2 + .../js/bundle.9ba3dbeae71a3cb9926b.min.js | 1 - .../js/bundle.ad0717ae3407e246a9ab.min.js | 1 + ...926b.css => main.ad0717ae3407e246a9ab.css} | 0 .../root/usr/share/clash/groups.sh | 20 ++- .../root/usr/share/clash/load.sh | 148 ++++++------------ .../root/usr/share/clash/load_groups.sh | 60 ++----- .../root/usr/share/clash/luci_version | 2 +- .../root/usr/share/clash/proxy.sh | 135 +++++++++++----- .../clash/yacd/8.ab0cff960a5b01ba8822.js | 2 - .../8.ab0cff960a5b01ba8822.js.LICENSE.txt | 14 -- .../clash/yacd/8.cfac5eece126ce875152.js | 1 + .../clash/yacd/app.52c1edcce9d28ad103e5.js | 2 - .../clash/yacd/app.7b7c4c1f4709f2490841.css | 27 ---- .../clash/yacd/app.97da0bf63bfa93de767f.js | 2 + ...> app.97da0bf63bfa93de767f.js.LICENSE.txt} | 0 .../clash/yacd/app.f7858f54039721e8f8e8.css | 27 ++++ .../yacd/core-js~app.e768d5b23b7e7ef5d68d.js | 1 + .../yacd/core-js~app.ed5efc5f285120e8ca95.js | 1 - .../root/usr/share/clash/yacd/index.html | 8 +- .../yacd/proxies.241abbb3a6eecf3d305f.css | 7 - .../yacd/proxies.885cb4b4a87c66e08e71.js | 1 - .../yacd/proxies.bdb3659841c50b543b0e.js | 1 + .../yacd/proxies.cea47222a686cf441cb9.css | 7 + .../root/usr/share/clash/yacd/report.html | 26 +-- .../clash/yacd/rules.664f8b737878361937cb.css | 1 + ...9767e.js => rules.efdab873e544c5738c5c.js} | 0 .../clash/yacd/rules.f60a65ba29535b87ba96.css | 1 - ...576.js => runtime.c72e8723983b31413a8e.js} | 2 +- .../root/usr/share/clash/yum_change.sh | 16 +- 44 files changed, 305 insertions(+), 338 deletions(-) delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.9ba3dbeae71a3cb9926b.min.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.ad0717ae3407e246a9ab.min.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/bundle.9ba3dbeae71a3cb9926b.min.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/bundle.ad0717ae3407e246a9ab.min.js rename package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/{main.9ba3dbeae71a3cb9926b.css => main.ad0717ae3407e246a9ab.css} (100%) delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/8.ab0cff960a5b01ba8822.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/8.ab0cff960a5b01ba8822.js.LICENSE.txt create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/8.cfac5eece126ce875152.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/app.52c1edcce9d28ad103e5.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/app.7b7c4c1f4709f2490841.css create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/app.97da0bf63bfa93de767f.js rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{app.52c1edcce9d28ad103e5.js.LICENSE.txt => app.97da0bf63bfa93de767f.js.LICENSE.txt} (100%) create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/app.f7858f54039721e8f8e8.css create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/core-js~app.e768d5b23b7e7ef5d68d.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/core-js~app.ed5efc5f285120e8ca95.js delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.241abbb3a6eecf3d305f.css delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.885cb4b4a87c66e08e71.js create mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/proxies.bdb3659841c50b543b0e.js create 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/rules.664f8b737878361937cb.css rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{rules.77b403da39cb4f89767e.js => rules.efdab873e544c5738c5c.js} (100%) delete mode 100644 package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/rules.f60a65ba29535b87ba96.css rename package/ntlf9t/luci-app-clash/root/usr/share/clash/yacd/{runtime.0b409d402f89d6765576.js => runtime.c72e8723983b31413a8e.js} (66%) diff --git a/package/ntlf9t/luci-app-clash/Makefile b/package/ntlf9t/luci-app-clash/Makefile index 67f4ea566f..9983f0cd31 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.3 +PKG_VERSION:=1.6.4 PKG_MAINTAINER:=frainzy1477 @@ -12,7 +12,7 @@ define Package/luci-app-clash CATEGORY:=LuCI SUBMENU:=3. Applications TITLE:=LuCI app for clash - DEPENDS:=+luci-compat +luci-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +libopenssl +openssl-util +curl +jsonfilter +ca-certificates +iptables-mod-tproxy + DEPENDS:=+luci-compat +luci-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +openssl-util +curl +jsonfilter +ca-certificates +iptables-mod-tproxy PKGARCH:=all MAINTAINER:=frainzy1477 endef @@ -141,10 +141,10 @@ define Package/$(PKG_NAME)/install $(INSTALL_BIN) ./root/usr/share/clash/clash.txt $(1)/usr/share/clash/ $(INSTALL_BIN) ./root/usr/share/clash/dashboard/index.html $(1)/usr/share/clash/dashboard/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.9ba3dbeae71a3cb9926b.css $(1)/usr/share/clash/dashboard/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/main.ad0717ae3407e246a9ab.css $(1)/usr/share/clash/dashboard/ $(INSTALL_BIN) ./root/usr/share/clash/dashboard/img/33343e6117c37aaef8886179007ba6b5.png $(1)/usr/share/clash/dashboard/img/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.9ba3dbeae71a3cb9926b.min.js $(1)/usr/share/clash/dashboard/js/ - $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.9ba3dbeae71a3cb9926b.min.js $(1)/usr/share/clash/dashboard/js/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/1.bundle.ad0717ae3407e246a9ab.min.js $(1)/usr/share/clash/dashboard/js/ + $(INSTALL_BIN) ./root/usr/share/clash/dashboard/js/bundle.ad0717ae3407e246a9ab.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 aeefe9fe18..27b1731221 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/controller/clash.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/controller/clash.lua @@ -334,7 +334,7 @@ end function act_ping() local e={} e.index=luci.http.formvalue("index") - e.ping=luci.sys.exec("ping -c 1 -W 1 -w 10 %q 2>&1 | grep -o 'time=[0-9]*.[0-9]' | awk -F '=' '{print$2}'"%luci.http.formvalue("domain")) + e.ping=luci.sys.exec("ping -c 1 -W 1 -w 5 %q 2>&1 | grep -o 'time=[0-9]*.[0-9]' | awk -F '=' '{print$2}'"%luci.http.formvalue("domain")) luci.http.prepare_content("application/json") luci.http.write_json(e) 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 9d29852012..46d49ce5a2 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 @@ -29,12 +29,6 @@ o:value("4", translate("Clash(dTun)")) end o.description = translate("Select core, clashr support ssr while clash does not.") - -o = s:option(ListValue, "new_conf", translate("New Config(Rename fields)")) -o:value("0", translate("Disable")) -o:value("1", translate("Enable")) -o.description = translate("https://github.com/Dreamacro/clash/commit/88d8f937938d7aba774b1af638df6910b1a1a14d") - o = s:option(ListValue, "g_rules", translate("Game Rules")) o.default = "0" o:value("0", translate("Disable")) 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 a86811ef7a..831a92acd7 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 @@ -71,11 +71,6 @@ o.title = translate("Config Name") o.rmempty = true o.description = translate("Give a name for your config") -o = s:option(ListValue, "new_conff", translate("New Config(Rename fields)")) -o:value("0", translate("Disable")) -o:value("1", translate("Enable")) -o.description = translate("https://github.com/Dreamacro/clash/commit/88d8f937938d7aba774b1af638df6910b1a1a14d") - cc = s:option(Flag, "same_tag", translate("Force Same Name")) cc.default = 1 cc.description = translate("Enable to overwrite config file") 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 bf66d8409f..8f800eb21b 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 @@ -37,7 +37,7 @@ deldns.description = translate("Remove Lan custom DNS Servers when client is dis cdns = s:option(Flag, "culan", translate("Enable Lan DNS")) cdns.default = 1 cdns.description = translate("Enabling will set custom DNS Servers for Lan") -cdns:depends("dnsforwader", 0) + dns = s:option(DynamicList, "landns", translate("Lan DNS servers")) dns.description = translate("Set custom DNS Servers for Lan") diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/groups.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/groups.lua index 332c242eba..dfeabbac30 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/groups.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/groups.lua @@ -27,6 +27,7 @@ o:value("select", translate("Select")) o:value("url-test", translate("URL-Test")) o:value("fallback", translate("Fallback")) o:value("load-balance", translate("Load-Balance")) +o:value("relay", translate("Relay")) o = s:option(Value, "name", translate("Group Name")) o.rmempty = false diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/import.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/import.lua index f6f991e532..8eb8b0f9ed 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/import.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/import.lua @@ -87,7 +87,7 @@ sul =ko:section(TypedSection, "clash", translate("Upload Config")) sul.anonymous = true sul.addremove=false o = sul:option(FileUpload, "") -o.description = translate("NB: Only upload file with name .yaml.It recommended to rename each upload file name to avoid overwrite") +--o.description = translate("NB: Only upload file with name .yaml.It recommended to rename each upload file name to avoid overwrite") o.title = translate(" ") o.template = "clash/clash_upload" um = sul:option(DummyValue, "", nil) @@ -96,6 +96,7 @@ um.template = "clash/clash_dvalue" local dir, fd dir = "/usr/share/clash/config/upload/" http.setfilehandler( + function(meta, chunk, eof) if not fd then if not meta then return end @@ -113,9 +114,15 @@ http.setfilehandler( if eof and fd then fd:close() fd = nil + local e=string.lower(string.sub(meta.file,-4,-1)) + local yml2=string.lower(string.sub(meta.file,0,-5)) + if e == '.yml' then local yml=string.lower(string.sub(meta.file,0,-5)) local c=fs.rename(dir .. meta.file,"/usr/share/clash/config/upload/".. yml .. ".yaml") um.value = translate("File saved to") .. ' "/usr/share/clash/config/upload/'..yml..'.yaml"' + else + um.value = translate("File saved to") .. ' "/usr/share/clash/config/upload/'..yml2..'yaml"' + end end end 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 6cc71081f5..27fd0329f7 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 @@ -62,23 +62,10 @@ end w = Map("clash") -s = w:section(TypedSection, "clash" , translate("New Config(Rename fields)")) +s = w:section(TypedSection, "clash" , translate("Load Groups)")) s.anonymous = true -o = s:option(ListValue, "new_conff", translate("New Config(Rename fields)")) -o:value("0", translate("Disable")) -o:value("1", translate("Enable")) -o.description = translate("https://github.com/Dreamacro/clash/commit/88d8f937938d7aba774b1af638df6910b1a1a14d") - -o=s:option(Button,"nwewcf") -o.inputtitle = translate("Save & Apply") -o.title = translate("Save & Apply") -o.inputstyle = "reload" -o.write = function() - w.uci:commit("clash") -end - o = s:option(Button, "Load") o.inputtitle = translate("Load Groups") o.title = translate("Load Groups") diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/provider-config.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/provider-config.lua index e9e202b1d5..0a49297ad8 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/provider-config.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/provider-config.lua @@ -132,7 +132,9 @@ o = s:option(DynamicList, "groups", translate("Policy Group")) o.rmempty = true m.uci:foreach("clash", "groups", function(s) - o:value(s.name) + if s.name ~= "" and s.name ~= nil and s.type ~= "relay" then + o:value(s.name) + end end) diff --git a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua index 1139cf610f..fcade5da1d 100644 --- a/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua +++ b/package/ntlf9t/luci-app-clash/luasrc/model/cbi/clash/servers-config.lua @@ -98,6 +98,7 @@ o:value("vmess", translate("Vmess")) o:value("socks5", translate("Socks5")) o:value("http", translate("HTTP(S)")) o:value("snell", translate("Snell")) +o:value("trojan", translate("trojan")) o.description = translate("Using incorrect encryption mothod may causes service fail to start") @@ -118,6 +119,7 @@ o.password = true o.rmempty = true o:depends("type", "ss") o:depends("type", "ssr") +o:depends("type", "trojan") o = s:option(Value, "psk", translate("Psk")) o.rmempty = false @@ -193,6 +195,9 @@ o = s:option(ListValue, "udp", translate("udp")) o:value("true") o:value("false") o:depends("type", "ss") +o:depends("type", "vmess") +o:depends("type", "socks5") +o:depends("type", "trojan") o = s:option(ListValue, "tls_custom", translate("tls")) o.default = "false" @@ -258,6 +263,8 @@ o:depends("type", "vmess") o:depends("type", "socks5") o:depends("type", "http") o:depends("obfs_vmess", "none") +o:depends("type", "trojan") +o:depends("obfs_vmess", "websocket") -- [[ TLS ]]-- o = s:option(ListValue, "tls", translate("TLS")) @@ -270,6 +277,20 @@ o:depends("type", "socks5") o:depends("type", "http") o:depends("obfs_vmess", "none") +-- [[ sni ]]-- +o = s:option(Value, "sni", translate("sni")) +o.datatype = "host" +o.placeholder = translate("example.com") +o.rmempty = true +o:depends("type", "trojan") + +-- [[ alpn ]]-- +o = s:option(DynamicList, "alpn", translate("alpn")) +o.rmempty = true +o:value("h2") +o:value("http/1.1") +o:depends("type", "trojan") + local apply = luci.http.formvalue("cbi.apply") if apply then m.uci:commit("clash") diff --git a/package/ntlf9t/luci-app-clash/root/etc/config/clash b/package/ntlf9t/luci-app-clash/root/etc/config/clash index f549e3cbed..28c9328608 100644 --- a/package/ntlf9t/luci-app-clash/root/etc/config/clash +++ b/package/ntlf9t/luci-app-clash/root/etc/config/clash @@ -29,7 +29,6 @@ config clash 'config' option clear_time '12' option append_rules '0' option enable_udp '0' - option new_conf '0' option ping_enable '1' option dnscache '0' 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 31bbcb829b..d580038ad1 100644 --- a/package/ntlf9t/luci-app-clash/root/etc/init.d/clash +++ b/package/ntlf9t/luci-app-clash/root/etc/init.d/clash @@ -143,11 +143,11 @@ yml_dns_change(){ dnsforwader=$(uci get clash.config.dnsforwader 2>/dev/null) dnscache=$(uci get clash.config.dnscache 2>/dev/null) if [ "${dns_port}" -eq 53 ]; then - sed -i 's/0.0.0.0:53/0.0.0.0:5300/g' $CONFIG_YAML + sed -i 's/^0.0.0.0:53/0.0.0.0:5300/g' $CONFIG_YAML fi - if [ "$dnsforwader" -eq 1 ]; then - if [ "$dns_port" -eq 53 ]; then + if [ "$dnsforwader" -ne 0 ]; then + if [ "${dns_port}" -eq 53 ]; then if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Setting dns forwarder" >$REAL_LOG @@ -187,7 +187,7 @@ yml_dns_change(){ uci commit dhcp fi fi - elif [ "$dnsforwader" -eq 0 ]; then + elif [ "$dnsforwader" -ne 1 ]; then if [ "$dnscache" -eq 0 ];then if [ "${lang}" == "en" ] || [ $lang == "auto" ];then echo "Disabling dns cache" >$REAL_LOG @@ -225,6 +225,11 @@ rules(){ wan=$(ifconfig | grep 'inet addr' | awk '{print $2}' | cut -d: -f2 2>/dev/null) ip6=$(ifconfig | grep 'inet6 addr' | awk '{print $3}' 2>/dev/null) enable_udp=$(uci get clash.config.enable_udp 2>/dev/null) + + PROXY_FWMARK="0x162" + PROXY_ROUTE_TABLE="0x162" + PROXY_BYPASS_USER="root" + if [ "${core}" -eq 1 ] || [ "${core}" -eq 2 ];then iptables -t nat -N clash @@ -250,8 +255,8 @@ rules(){ if [ "${enable_udp}" -eq 1 ]; then - ip rule add fwmark 1 table 100 - ip route add local default dev lo table 100 + ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 + ip route add local default dev lo table "$PROXY_ROUTE_TABLE" iptables -t mangle -N clash iptables -t mangle -A clash -d 0.0.0.0/8 -j RETURN @@ -268,7 +273,7 @@ rules(){ done fi - iptables -t mangle -A clash -p udp -j TPROXY --on-port "${redir_port}" --tproxy-mark 1 + iptables -t mangle -A clash -p udp -j TPROXY --on-port "${redir_port}" --tproxy-mark "$PROXY_FWMARK" iptables -t mangle -A PREROUTING -p udp -j clash fi @@ -278,12 +283,12 @@ rules(){ if [ ! -z "${fake_ip_range}" ];then iptables -t nat -A OUTPUT -p tcp -d $fake_ip_range -j REDIRECT --to-ports "${redir_port}" if [ "${enable_udp}" -eq 1 ]; then - iptables -t mangle -A OUTPUT -p udp -d $fake_ip_range -j MARK --set-mark 1 + 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 1 + iptables -t mangle -A OUTPUT -p udp -d 198.18.0.1/16 -j MARK --set-mark "$PROXY_FWMARK" fi fi @@ -303,16 +308,13 @@ rules(){ fi done fi - ip6tables -t mangle -A clash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark 1 + ip6tables -t mangle -A clash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark "$PROXY_FWMARK" ip6tables -t mangle -A PREROUTING -p udp -j clash fi fi elif [ "${core}" -eq 3 ] || [ "${core}" -eq 4 ];then - PROXY_FWMARK="0x162" - PROXY_ROUTE_TABLE="0x162" - PROXY_BYPASS_USER="root" TUN_DEVICE=$(egrep '^ {0,}device-url:' /etc/clash/config.yaml |grep device-url: |awk -F '//' '{print $2}') if [ -z $TUN_DEVICE ];then @@ -429,14 +431,11 @@ elif [ "${core}" -eq 3 ] && [ ! -f /etc/clash/clashtun/clash ]; then exit 0 else if [ -f $CONFIG_YAML ] && [ "$(ls -l $CONFIG_YAML|awk '{print int($5/1024)}')" -ne 0 ] ; then - new_conf=$(uci get clash.config.new_conf 2>/dev/null) + + check >/dev/null 2>&1 yml_change >/dev/null 2>&1 - if [ "$new_conf" -eq 1 ];then - check >/dev/null 2>&1 - fi - checktype=$(grep -c "type: ssr" /etc/clash/config.yaml 2>/dev/null) if [ "${checktype}" -gt 0 ] && [ "${core}" -ne 2 ]; then @@ -609,6 +608,9 @@ remove_mark(){ core=$(uci get clash.config.core 2>/dev/null) ipv6=$(uci get clash.config.ipv6 2>/dev/null) dns_port=$(grep "^ \{0,\}listen:" $CONFIG_YAML |awk -F ':' '{print $3}' 2>/dev/null) + PROXY_FWMARK="0x162" 2>/dev/null + PROXY_ROUTE_TABLE="0x162" 2>/dev/null + if [ -f /usr/sbin/ip6tables ] && [ "${ipv6}" -eq 1 ]; then ip6tables -t nat -F clash_ipv6 2>/dev/null1 && ip6tables -t nat -X clash_ipv6 2>/dev/null @@ -618,11 +620,11 @@ remove_mark(){ done fi + ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 >/dev/null 2>&1 + ip route del local default dev lo table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 if [ "${core}" -eq 3 ] || [ "${core}" -eq 4 ];then - PROXY_FWMARK="0x162" 2>/dev/null - PROXY_ROUTE_TABLE="0x162" 2>/dev/null TUN_DEVICE=$(egrep '^ {0,}device-url:' /etc/clash/config.yaml |grep device-url: |awk -F '//' '{print $2}') if [ -z $TUN_DEVICE ];then TUN_DEVICE_NAME="clash0" @@ -634,7 +636,8 @@ remove_mark(){ ip tuntap del $TUN_DEVICE_NAME mode tun 2>/dev/null ip route del default dev $TUN_DEVICE_NAME table "$PROXY_ROUTE_TABLE" 2>/dev/null fi - ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" 2>/dev/null + #ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" 2>/dev/null + ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 >/dev/null 2>&1 iptables -t mangle -D OUTPUT -j clash 2>/dev/null iptables -t mangle -D PREROUTING -m set ! --match-set localnetwork dst -j MARK --set-mark "$PROXY_FWMARK" 2>/dev/null 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 f20a2099ac..e7179fff42 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 @@ -5,8 +5,8 @@ Clash - +
- + diff --git a/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.9ba3dbeae71a3cb9926b.min.js b/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.9ba3dbeae71a3cb9926b.min.js deleted file mode 100644 index 7f6760688a..0000000000 --- a/package/ntlf9t/luci-app-clash/root/usr/share/clash/dashboard/js/1.bundle.9ba3dbeae71a3cb9926b.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 1.bundle.9ba3dbeae71a3cb9926b.min.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(e,t,n){"use strict";e.exports=n(50)},function(e,t,n){e.exports=n(54)()},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){"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",c=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,s=/\[([^\]]+)]|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(c){return{M:a,y:l,w:i,d:o,D:"date",h:r,m:n,s:t,ms:e,Q:u}[c]||String(c||"").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||(h=r),r},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(c);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?s(o,d):".."===p?(s(o,d),f++):f&&(s(o,d),f--)}if(!u)for(;f--;f)o.unshift("..");!u||""===o[0]||o[0]&&c(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);s.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(6),o=n(67),i=n(30),a=n(69),u=n(72),l=n(73),c=n(34);e.exports=function(e){return new Promise((function(t,s){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,s,r),p=null}},p.onabort=function(){p&&(s(c("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){s(c("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),s(c(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(),s(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(6);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 c(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(o=!1)),c.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},c.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?"."+N(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c