🎨 Sync 2026-04-04 20:20:52

This commit is contained in:
github-actions[bot] 2026-04-04 20:20:52 +08:00
parent 874bea09f4
commit c65d4b582c
14 changed files with 88 additions and 47 deletions

View File

@ -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)

View File

@ -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)?

View File

@ -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

View File

@ -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" } }
]

View File

@ -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"
}

View File

@ -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}" ] && {

View File

@ -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
}

View File

@ -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}" ] && {

View File

@ -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"

View File

@ -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 \

View File

@ -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")

View File

@ -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 ""

View File

@ -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 长度"

View File

@ -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))
}
}