diff --git a/clouddrive2/Makefile b/clouddrive2/Makefile index 47bbc4bc..b27b66ac 100644 --- a/clouddrive2/Makefile +++ b/clouddrive2/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=clouddrive2 -PKG_VERSION:=0.9.17 +PKG_VERSION:=1.0.4 PKG_RELEASE=1 ifeq ($(ARCH),aarch64) diff --git a/ddns-go/Makefile b/ddns-go/Makefile index d62d3697..114f35e6 100644 --- a/ddns-go/Makefile +++ b/ddns-go/Makefile @@ -5,8 +5,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ddns-go -PKG_VERSION:=6.16.2 -PKG_RELEASE:=3 +PKG_VERSION:=6.16.4 +PKG_RELEASE:=4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)? diff --git a/hickory-dns/Makefile b/hickory-dns/Makefile index 76acb714..f9a5f8af 100644 --- a/hickory-dns/Makefile +++ b/hickory-dns/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hickory-dns PKG_VERSION:=2026.04.02~54a81de -PKG_RELEASE:=9 +PKG_RELEASE:=10 HICKORY_COMMIT:=54a81deefb24bb97df466b9032d5928345fffdde diff --git a/hickory-dns/files/etc/hickory-dns/forwarder.toml b/hickory-dns/files/etc/hickory-dns/forwarder.toml index 77c86ced..a84ac8d2 100644 --- a/hickory-dns/files/etc/hickory-dns/forwarder.toml +++ b/hickory-dns/files/etc/hickory-dns/forwarder.toml @@ -1,4 +1,6 @@ listen_addrs_ipv6 = ["::1"] +listen_port = 5335 +prometheus_listen_addr = "[::]:9000" [[zones]] zone = "." @@ -16,14 +18,6 @@ connections = [ { protocol = { type = "h3", server_name = "dns.alidns.com", path = "/dns-query", disable_grease = false } } ] -[[zones.stores.name_servers]] -ip = "1.12.12.12" -trust_negative_responses = true -connections = [ - { protocol = { type = "https", server_name = "doh.pub", path = "/dns-query" } }, - { protocol = { type = "tls", server_name = "dot.pub" } } -] - [[zones.stores.name_servers]] ip = "2400:3200::1" trust_negative_responses = true @@ -31,11 +25,3 @@ connections = [ { protocol = { type = "quic", server_name = "dns.alidns.com" } }, { protocol = { type = "h3", server_name = "dns.alidns.com", path = "/dns-query", disable_grease = false } } ] - -[[zones.stores.name_servers]] -ip = "120.53.53.53" -trust_negative_responses = true -connections = [ - { protocol = { type = "https", server_name = "doh.pub", path = "/dns-query" } }, - { protocol = { type = "tls", server_name = "dot.pub" } } -] diff --git a/hickory-dns/files/etc/init.d/hickory-dns b/hickory-dns/files/etc/init.d/hickory-dns index 86112404..35fb57ab 100755 --- a/hickory-dns/files/etc/init.d/hickory-dns +++ b/hickory-dns/files/etc/init.d/hickory-dns @@ -1,17 +1,23 @@ #!/bin/sh /etc/rc.common USE_PROCD=1 -START=99 +START=18 +STOP=51 PROG=/usr/bin/hickory-dns CONF=/etc/hickory-dns/forwarder.toml start_service() { procd_open_instance hickory-dns - procd_set_param command $PROG -c $CONF -p 5335 -q --prometheus-listen-address=0.0.0.0:9000 + procd_set_param command $PROG -c $CONF -q procd_set_param user nobody procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" procd_close_instance hickory-dns } + + +service_triggers() { + procd_add_reload_trigger "dhcp" "network" "system" +} diff --git a/luci-app-passwall/root/usr/share/passwall/iptables.sh b/luci-app-passwall/root/usr/share/passwall/iptables.sh index 09df2d43..391ad56b 100755 --- a/luci-app-passwall/root/usr/share/passwall/iptables.sh +++ b/luci-app-passwall/root/usr/share/passwall/iptables.sh @@ -1019,8 +1019,8 @@ add_firewall_rule() { unset WAN_IP wan_ip insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW" + # Only TCP, UDP Invalid. insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT" - insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p udp -m socket -j PSW_DIVERT" $ipt_m -N PSW_OUTPUT $ipt_m -A PSW_OUTPUT $(dst $IPSET_LAN) -j RETURN @@ -1047,7 +1047,7 @@ add_firewall_rule() { $ipt_m -A PSW_OUTPUT -m conntrack --ctdir REPLY -j RETURN $ipt_m -A PSW_OUTPUT -m mark --mark 255 -j RETURN - ip rule add fwmark ${FWMARK} lookup 999 priority 999 + ip rule add fwmark ${FWMARK} table 999 priority 999 ip route add local 0.0.0.0/0 dev lo table 999 [ "$accept_icmpv6" = "1" ] && { @@ -1099,8 +1099,8 @@ add_firewall_rule() { unset WAN6_IP wan6_ip insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW" + # Only TCP, UDP Invalid. insert_rule_before "$ip6t_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT" - insert_rule_before "$ip6t_m" "PREROUTING" "PSW" "-p udp -m socket -j PSW_DIVERT" $ip6t_m -N PSW_OUTPUT $ip6t_m -A PSW_OUTPUT -m mark --mark 255 -j RETURN @@ -1349,10 +1349,10 @@ del_firewall_rule() { done done - ip rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null + ip rule del fwmark ${FWMARK} 2>/dev/null ip route del local 0.0.0.0/0 dev lo table 999 2>/dev/null - ip -6 rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null + ip -6 rule del fwmark ${FWMARK} 2>/dev/null ip -6 route del local ::/0 dev lo table 999 2>/dev/null destroy_ipset $IPSET_LOCAL @@ -1422,7 +1422,6 @@ gen_include() { \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW") \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT") - \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p udp -m socket -j PSW_DIVERT") WAN_IP=\$(get_wan_ips ip4) [ ! -z "\${WAN_IP}" ] && { @@ -1453,7 +1452,6 @@ gen_include() { \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW") \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT") - \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "PSW" "-p udp -m socket -j PSW_DIVERT") WAN6_IP=\$(get_wan_ips ip6) [ ! -z "\${WAN6_IP}" ] && { diff --git a/luci-app-passwall/root/usr/share/passwall/nftables.sh b/luci-app-passwall/root/usr/share/passwall/nftables.sh index faa1b80e..3c6bcc91 100755 --- a/luci-app-passwall/root/usr/share/passwall/nftables.sh +++ b/luci-app-passwall/root/usr/share/passwall/nftables.sh @@ -834,9 +834,36 @@ filter_direct_node_list() { done } + +del_script_mwan3() { + [ -s "/etc/init.d/mwan3" ] && sed -i "/${CONFIG}/d" /etc/init.d/mwan3 >/dev/null 2>&1 +} + +add_script_mwan3() { + del_script_mwan3 + [ -s "/etc/init.d/mwan3" ] && { + sed -i '/start_service()/,/}/ s/^}/ \/usr\/share\/passwall\/nftables.sh mwan3_start\n}/' /etc/init.d/mwan3 + sed -i '/stop_service().*{/a \ \/usr\/share\/passwall\/nftables.sh mwan3_stop' /etc/init.d/mwan3 + } +} + +mwan3_stop() { + local handles=$(nft -a list chain ip mangle mwan3_hook 2>/dev/null | grep "${FWMARK}" | awk -F '# handle ' '{print$2}') + for handle in $handles; do + nft delete rule ip mangle mwan3_hook handle ${handle} 2>/dev/null + done +} + +mwan3_start() { + mwan3_stop + nft list chain ip mangle mwan3_hook >/dev/null 2>&1 && nft insert rule ip mangle mwan3_hook ct mark ${FWMARK} counter return >/dev/null 2>&1 +} + add_firewall_rule() { echolog "开始加载 nftables 防火墙规则..." gen_nft_tables + add_script_mwan3 + mwan3_start gen_nftset $NFTSET_WAN ipv4_addr 0 "-1" gen_nftset $NFTSET_VPS ipv4_addr 0 "-1" gen_nftset $NFTSET_GFW ipv4_addr "2d" 0 @@ -1011,7 +1038,8 @@ add_firewall_rule() { nft "add chain $NFTABLE_NAME PSW_DIVERT" nft "flush chain $NFTABLE_NAME PSW_DIVERT" - nft "add rule $NFTABLE_NAME PSW_DIVERT meta l4proto { tcp, udp } socket transparent 1 mark set ${FWMARK} counter accept" + # Only TCP, UDP Invalid. + nft "add rule $NFTABLE_NAME PSW_DIVERT meta l4proto tcp socket transparent 1 mark set ${FWMARK} counter accept" nft "add chain $NFTABLE_NAME PSW_DNS" nft "flush chain $NFTABLE_NAME PSW_DNS" @@ -1098,7 +1126,7 @@ add_firewall_rule() { fi unset WAN_IP wan_ip - ip rule add fwmark ${FWMARK} lookup 999 priority 999 + ip rule add fwmark ${FWMARK} table 999 priority 999 ip route add local 0.0.0.0/0 dev lo table 999 #ipv6 tproxy mode and udp @@ -1382,10 +1410,10 @@ del_firewall_rule() { # Need to be removed at the end, otherwise it will show "Resource busy" nft delete chain $NFTABLE_NAME handle $(nft -a list chains | grep -E "PSW_RULE" | awk -F '# handle ' '{print$2}') 2>/dev/null - ip rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null + ip rule del fwmark ${FWMARK} 2>/dev/null ip route del local 0.0.0.0/0 dev lo table 999 2>/dev/null - ip -6 rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null + ip -6 rule del fwmark ${FWMARK} 2>/dev/null ip -6 route del local ::/0 dev lo table 999 2>/dev/null destroy_nftset $NFTSET_LOCAL @@ -1410,6 +1438,8 @@ del_firewall_rule() { destroy_nftset $NFTSET_BLOCK6 destroy_nftset $NFTSET_WHITE6 + del_script_mwan3 + echolog "删除 nftables 规则完成。" } @@ -1492,6 +1522,12 @@ insert_nftset) filter_direct_node_list) filter_direct_node_list ;; +mwan3_start) + mwan3_start + ;; +mwan3_stop) + mwan3_stop + ;; stop) stop ;; @@ -1500,3 +1536,7 @@ start) ;; *) ;; esac + +reload_service() { + restart +} diff --git a/luci-app-passwall2/root/usr/share/passwall2/iptables.sh b/luci-app-passwall2/root/usr/share/passwall2/iptables.sh index bde75b4c..358ee39c 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/iptables.sh +++ b/luci-app-passwall2/root/usr/share/passwall2/iptables.sh @@ -727,8 +727,8 @@ add_firewall_rule() { unset WAN_IP wan_ip insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW2" + # Only TCP, UDP Invalid. insert_rule_before "$ipt_m" "PREROUTING" "PSW2" "-p tcp -m socket -j PSW2_DIVERT" - insert_rule_before "$ipt_m" "PREROUTING" "PSW2" "-p udp -m socket -j PSW2_DIVERT" $ipt_m -N PSW2_OUTPUT $ipt_m -A PSW2_OUTPUT $(dst $IPSET_LAN) -j RETURN @@ -794,8 +794,8 @@ add_firewall_rule() { unset WAN6_IP wan6_ip insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW2" + # Only TCP, UDP Invalid. insert_rule_before "$ip6t_m" "PREROUTING" "PSW2" "-p tcp -m socket -j PSW2_DIVERT" - insert_rule_before "$ip6t_m" "PREROUTING" "PSW2" "-p udp -m socket -j PSW2_DIVERT" $ip6t_m -N PSW2_OUTPUT $ip6t_m -A PSW2_OUTPUT -m mark --mark 255 -j RETURN @@ -999,7 +999,6 @@ gen_include() { \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW2") \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "PSW2" "-p tcp -m socket -j PSW2_DIVERT") - \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "PSW2" "-p udp -m socket -j PSW2_DIVERT") WAN_IP=\$(get_wan_ips ip4) [ ! -z "\${WAN_IP}" ] && { @@ -1025,7 +1024,6 @@ gen_include() { \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW2") \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "PSW2" "-p tcp -m socket -j PSW2_DIVERT") - \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "PSW2" "-p udp -m socket -j PSW2_DIVERT") WAN6_IP=\$(get_wan_ips ip6) [ ! -z "\${WAN6_IP}" ] && { diff --git a/luci-app-passwall2/root/usr/share/passwall2/nftables.sh b/luci-app-passwall2/root/usr/share/passwall2/nftables.sh index 3b417ecb..3b2fa467 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/nftables.sh +++ b/luci-app-passwall2/root/usr/share/passwall2/nftables.sh @@ -736,7 +736,8 @@ add_firewall_rule() { nft "add chain $NFTABLE_NAME PSW2_DIVERT" nft "flush chain $NFTABLE_NAME PSW2_DIVERT" - nft "add rule $NFTABLE_NAME PSW2_DIVERT meta l4proto { tcp, udp } socket transparent 1 mark set ${FWMARK} counter accept" + # Only TCP, UDP Invalid. + nft "add rule $NFTABLE_NAME PSW2_DIVERT meta l4proto tcp socket transparent 1 mark set ${FWMARK} counter accept" nft "add chain $NFTABLE_NAME PSW2_DNS" nft "flush chain $NFTABLE_NAME PSW2_DNS" diff --git a/luci-app-ssr-plus/Makefile b/luci-app-ssr-plus/Makefile index ac0c8ad0..910c99a0 100644 --- a/luci-app-ssr-plus/Makefile +++ b/luci-app-ssr-plus/Makefile @@ -4,7 +4,7 @@ LUCI_TITLE:=luci-app-ssr-plus LUCI_PKGARCH:=all PKG_NAME:=luci-app-ssr-plus PKG_VERSION:=190 -PKG_RELEASE:=6 +PKG_RELEASE:=7 PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \ diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua index f8fc8ad4..2e5d38af 100644 --- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua @@ -412,7 +412,6 @@ if is_finded("xray") then o = s:option(ListValue, "type", translate("Type")) o.default = "base64" o:value("rand", "rand") - o:value("array", "array") o:value("str", "str") o:value("hex", "hex") o:value("base64", "base64") diff --git a/luci-app-ssr-plus/po/templates/ssr-plus.pot b/luci-app-ssr-plus/po/templates/ssr-plus.pot index 5078a4d3..ff6a9a1d 100644 --- a/luci-app-ssr-plus/po/templates/ssr-plus.pot +++ b/luci-app-ssr-plus/po/templates/ssr-plus.pot @@ -542,7 +542,7 @@ msgid "" "fastest_addr (default: load_balance)." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:433 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:432 msgid "Delay (ms)" msgstr "" @@ -611,7 +611,7 @@ msgstr "" msgid "DoT upstream (Need use wolfssl version)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:420 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:419 msgid "Domain Strategy" msgstr "" @@ -1467,7 +1467,7 @@ msgstr "" msgid "Packet or Rand length as a string, e.g., 10-20." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:429 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:428 msgid "Packet | Rand Length" msgstr "" diff --git a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po index ee257c9a..b36c7aa9 100644 --- a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po +++ b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po @@ -555,7 +555,7 @@ msgstr "" "定义上游逻辑模式,可选择值:负载均衡、并行查询、最快响应(默认值:负载均" "衡)。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:433 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:432 msgid "Delay (ms)" msgstr "延迟(ms)" @@ -624,7 +624,7 @@ msgstr "是否要恢复客户端默认配置?" msgid "DoT upstream (Need use wolfssl version)" msgstr "DoT 上游(需使用 wolfssl 版本)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:420 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:419 msgid "Domain Strategy" msgstr "域名解析策略" @@ -1483,7 +1483,7 @@ msgstr "" msgid "Packet or Rand length as a string, e.g., 10-20." msgstr "数据包或 Rand 长度以字符串形式输入,例如:10-20。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:429 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:428 msgid "Packet | Rand Length" msgstr "数据包 | Rand 长度" diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua index fd27acd7..744908a7 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua @@ -61,6 +61,19 @@ local function base64Encode(text) end end +-- Hex 编码 +local function hexEncode(text) + if not text or text == "" then + return '' + end + local hex = '' + for i = 1, #text do + local byte = string.byte(text, i) + hex = hex .. string.format('%02X', byte) + end + return hex +end + local function cleanEmptyTables(t) if type(t) ~= "table" then return nil end for k, v in pairs(t) do @@ -562,7 +575,7 @@ end { rand = (n_type == "rand") and (n_packet and (type(n_packet) == "string" and (n_packet:find("-")) and n_packet or tonumber(n_packet))) or nil, type = (type(n_type) == "string" and n_type ~= "rand") and n_type or nil, - packet = (n_type ~= "rand") and (n_type ~= "str" and (n_packet and type(n_packet) == "string" and base64Encode(n_packet)) or n_packet) or nil, + packet = (n_type ~= "rand") and ((n_packet and type(n_packet) == "string") and ((n_type == "hex" and hexEncode(n_packet)) or (n_type == "base64" and base64Encode(n_packet))) or n_packet) or nil, delay = (type(n_delay) == "string" and string.find(n_delay, "-")) and n_delay or (n_delay and tonumber(n_delay)) } }