diff --git a/package/ntlf9t/luci-app-clash/Makefile b/package/ntlf9t/luci-app-clash/Makefile index bde260f43a..684bd6c080 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-base +wget +iptables +coreutils-base64 +coreutils +coreutils-nohup +bash +ipset +libustream-openssl +libopenssl +openssl-util +curl +jsonfilter +ca-certificates +iptables-mod-tproxy + DEPENDS:=+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 @@