update 2024-04-01 00:18:09

This commit is contained in:
kenzok8 2024-04-01 00:18:09 +08:00
parent 93b3ff5055
commit 20cb82e002
6 changed files with 67 additions and 30 deletions

View File

@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=daed PKG_NAME:=daed
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/daeuniverse/daed.git PKG_SOURCE_URL:=https://github.com/daeuniverse/daed.git
PKG_SOURCE_DATE:=2023-11-03 PKG_SOURCE_DATE:=2024-03-27
PKG_SOURCE_VERSION:=54bc33934d0e323449df11fc26dc9569edbbe13c PKG_SOURCE_VERSION:=2841ec229ff3a0675293b95a23f0f3aac2604982
PKG_MIRROR_HASH:=1d4d8b4fd163834acec3d227ef56697d79ffa374309105a9e6b35dcf4aa96b14 PKG_MIRROR_HASH:=f53d172431d76fc32fb2adb8761896c07900f1a9bf55ba219e5e6b1c40ac6796
PKG_LICENSE:=AGPL-3.0-only MIT PKG_LICENSE:=AGPL-3.0-only MIT
PKG_LICENSE_FILES:=LICENSE wing/LICENSE PKG_LICENSE_FILES:=LICENSE wing/LICENSE
@ -48,7 +48,8 @@ define Package/daed
TITLE:=A Modern Dashboard For dae TITLE:=A Modern Dashboard For dae
# You need enable KERNEL_DEBUG_INFO_BTF and KERNEL_BPF_EVENTS # You need enable KERNEL_DEBUG_INFO_BTF and KERNEL_BPF_EVENTS
DEPENDS:=$(GO_ARCH_DEPENDS) $(BPF_DEPENDS) \ DEPENDS:=$(GO_ARCH_DEPENDS) $(BPF_DEPENDS) \
+ca-bundle +kmod-sched-core +kmod-sched-bpf +kmod-xdp-sockets-diag +ca-bundle +kmod-sched-core +kmod-sched-bpf +kmod-xdp-sockets-diag \
+kmod-veth
endef endef
define Package/daed-geoip define Package/daed-geoip
@ -79,7 +80,7 @@ WEB_FILE:=$(PKG_NAME)-web-$(PKG_VERSION).zip
define Download/daed-web define Download/daed-web
URL:=@IMMORTALWRT URL:=@IMMORTALWRT
FILE:=$(WEB_FILE) FILE:=$(WEB_FILE)
HASH:=8cbff499a250ab5af859e3374f566c683925ef9b3efddce7ceeefdf44ef6fe04 HASH:=dee10f5c646cddb47b0ef1e377a956b7d4841dc90931ab720299f73da705f10b
endef endef
define Build/Prepare define Build/Prepare

View File

@ -56,10 +56,10 @@ o.rewrite_option = o.option
o = s:option(Value, option_name("hop_interval"), translate("Hop Interval")) o = s:option(Value, option_name("hop_interval"), translate("Hop Interval"))
o.rewrite_option = o.option o.rewrite_option = o.option
o = s:option(Value, option_name("recv_window_conn"), translate("QUIC stream receive window")) o = s:option(Value, option_name("recv_window_conn"), translate("QUIC connection receive window"))
o.rewrite_option = o.option o.rewrite_option = o.option
o = s:option(Value, option_name("recv_window"), translate("QUIC connection receive window")) o = s:option(Value, option_name("recv_window"), translate("QUIC stream receive window"))
o.rewrite_option = o.option o.rewrite_option = o.option
o = s:option(Value, option_name("idle_timeout"), translate("Idle Timeout")) o = s:option(Value, option_name("idle_timeout"), translate("Idle Timeout"))

View File

@ -94,6 +94,15 @@ o:value("leastPing")
o:value("leastLoad") o:value("leastLoad")
o.default = "leastLoad" o.default = "leastLoad"
-- Fallback Node
if api.compare_versions(api.get_app_version("xray"), ">=", "1.8.10") then
local o = s:option(ListValue, option_name("fallback_node"), translate("Fallback Node"))
o:depends({ [option_name("protocol")] = "_balancing" })
o:value("",translate("Null"))
o.default = ""
for k, v in pairs(nodes_table) do o:value(v.id, v.remark) end
end
-- 探测地址 -- 探测地址
local o = s:option(Flag, option_name("useCustomProbeUrl"), translate("Use Custome Probe URL"), translate("By default the built-in probe URL will be used, enable this option to use a custom probe URL.")) local o = s:option(Flag, option_name("useCustomProbeUrl"), translate("Use Custome Probe URL"), translate("By default the built-in probe URL will be used, enable this option to use a custom probe URL."))
o:depends({ [option_name("balancingStrategy")] = "leastPing" }) o:depends({ [option_name("balancingStrategy")] = "leastPing" })

View File

@ -646,6 +646,7 @@ function gen_config(var)
local function gen_balancer(_node, loopbackTag) local function gen_balancer(_node, loopbackTag)
local blc_nodes = _node.balancing_node local blc_nodes = _node.balancing_node
local fallback_node_id = _node.fallback_node
local length = #blc_nodes local length = #blc_nodes
local valid_nodes = {} local valid_nodes = {}
for i = 1, length do for i = 1, length do
@ -668,6 +669,27 @@ function gen_config(var)
end end
end end
end end
if fallback_node_id == "" then
fallback_node_id = nil
end
if fallback_node_id then
local is_new_node = true
for _, outbound in ipairs(outbounds) do
if outbound.tag == fallback_node_id then
is_new_node = false
break
end
end
if is_new_node then
local fallback_node = uci:get_all(appname, fallback_node_id)
local outbound = gen_outbound(flag, fallback_node, fallback_node_id, { fragment = xray_settings.fragment == "1" or nil })
if outbound then
table.insert(outbounds, outbound)
else
fallback_node_id = nil
end
end
end
local balancer, rule local balancer, rule
if #valid_nodes > 0 then if #valid_nodes > 0 then
@ -675,6 +697,7 @@ function gen_config(var)
balancer = { balancer = {
tag = balancerTag, tag = balancerTag,
selector = valid_nodes, selector = valid_nodes,
fallbackTag = fallback_node_id,
strategy = { type = _node.balancingStrategy or "random" } strategy = { type = _node.balancingStrategy or "random" }
} }
if _node.balancingStrategy == "leastPing" or _node.balancingStrategy == "leastLoad" then if _node.balancingStrategy == "leastPing" or _node.balancingStrategy == "leastLoad" then
@ -683,23 +706,22 @@ function gen_config(var)
subjectSelector = { "blc-" }, subjectSelector = { "blc-" },
probeUrl = _node.useCustomProbeUrl and _node.probeUrl or nil, probeUrl = _node.useCustomProbeUrl and _node.probeUrl or nil,
probeInterval = _node.probeInterval or "1m", probeInterval = _node.probeInterval or "1m",
enableConcurrency = node.type == "Xray" and true or nil --这里只判断顶层节点(分流总节点/单独的负载均衡节点)类型为Xray就可以启用并发 enableConcurrency = true
} }
end end
end end
if loopbackTag and loopbackTag ~= "" then if loopbackTag == nil or loopbackTag =="" then loopbackTag = _node[".name"] end
local inboundTag = loopbackTag .. "-in" local inboundTag = loopbackTag .. "-in"
table.insert(outbounds, { table.insert(outbounds, {
protocol = "loopback", protocol = "loopback",
tag = loopbackTag, tag = loopbackTag,
settings = { inboundTag = inboundTag } settings = { inboundTag = inboundTag }
}) })
rule = { rule = {
type = "field", type = "field",
inboundTag = { inboundTag }, inboundTag = { inboundTag },
balancerTag = balancerTag balancerTag = balancerTag
} }
end
end end
return balancer, rule return balancer, rule
end end
@ -891,9 +913,10 @@ function gen_config(var)
end end
end end
if is_new_balancer then if is_new_balancer then
local balancer = gen_balancer(_node) local balancer, rule = gen_balancer(_node)
if balancer then if balancer then
table.insert(balancers, balancer) table.insert(balancers, balancer)
table.insert(rules, rule)
rule_balancerTag = balancer.tag rule_balancerTag = balancer.tag
end end
end end
@ -1020,11 +1043,12 @@ function gen_config(var)
} }
elseif node.protocol == "_balancing" then elseif node.protocol == "_balancing" then
if node.balancing_node then if node.balancing_node then
local balancer = gen_balancer(node) local balancer, rule = gen_balancer(node)
routing = { routing = {
balancers = { balancer }, balancers = { balancer },
rules = { rules = {
{ type = "field", network = "tcp,udp", balancerTag = balancer.tag } { type = "field", network = "tcp,udp", balancerTag = balancer.tag },
rule
} }
} }
end end
@ -1286,7 +1310,7 @@ function gen_config(var)
-- } -- }
} }
} }
if xray_settings.fragment == "1" then if xray_settings.fragment == "1" then
table.insert(outbounds, { table.insert(outbounds, {
protocol = "freedom", protocol = "freedom",
@ -1305,9 +1329,9 @@ function gen_config(var)
tcpNoDelay = true tcpNoDelay = true
} }
} }
}) })
end end
table.insert(outbounds, { table.insert(outbounds, {
protocol = "freedom", protocol = "freedom",
tag = "direct", tag = "direct",

View File

@ -388,6 +388,9 @@ msgstr "负载均衡"
msgid "Balancing Strategy" msgid "Balancing Strategy"
msgstr "负载均衡策略" msgstr "负载均衡策略"
msgid "Fallback Node"
msgstr "后备节点"
msgid "Use Custome Probe URL" msgid "Use Custome Probe URL"
msgstr "使用自定义探测网址" msgstr "使用自定义探测网址"

View File

@ -21,13 +21,13 @@ define Download/geoip
HASH:=c4a43c690153b91e69c66808840841dd7fb37e5e6326658c592d32f0519b50f3 HASH:=c4a43c690153b91e69c66808840841dd7fb37e5e6326658c592d32f0519b50f3
endef endef
GEOSITE_VER:=20240324094850 GEOSITE_VER:=20240331083526
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER) GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
define Download/geosite define Download/geosite
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/ URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
URL_FILE:=dlc.dat URL_FILE:=dlc.dat
FILE:=$(GEOSITE_FILE) FILE:=$(GEOSITE_FILE)
HASH:=402d4bdbec16f1d3fce3f5a29dcd5a08725b8e071a507a4b2650d2c2e72f0e9d HASH:=544454d37f044d30d21f771e848ee7d956cc3b2a99f7e040434db62d7288d32e
endef endef
GEOSITE_IRAN_VER:=202403250026 GEOSITE_IRAN_VER:=202403250026