update 2026-09-21 10:56:09

This commit is contained in:
action committed 2026-09-21 10:56:10 +08:00
1 parent 1b82fb5b38
commit fce0a764cd
18 files changed
+72 -31

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@ PKG_SHORT_SHA:=5019cc0
PKG_COMMIT_DATE:=2026.09.19
PKG_VERSION:=$(PKG_COMMIT_DATE)~$(PKG_SHORT_SHA)
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA)
-2
View File
@@ -48,8 +48,6 @@ config clashoo 'config'
list fallback_filter_ipcidr '240.0.0.0/4'
option dns_respect_rules '1'
option dns_loopback_compat '0'
list dns_loopback_compat_resolver 'udp://223.5.5.5:53'
list dns_loopback_compat_resolver 'udp://119.29.29.29:53'
option dns_migrated '1'
option block_quic '0'
option singbox_independent_cache '0'
+34 -2
View File
@@ -1089,6 +1089,38 @@ _dns_nameserver_inherit_mode() {
printf '%s' inherit
}
_dns_proxy_nameservers() {
local i=0 t en a p port s out="" prefix
while :; do
t="$(uci -q get clashoo.@dnsservers[$i].ser_type 2>/dev/null)"
[ -n "$t" ] || break
en="$(uci -q get clashoo.@dnsservers[$i].enabled 2>/dev/null)"
a="$(uci -q get clashoo.@dnsservers[$i].ser_address 2>/dev/null)"
p="$(uci -q get clashoo.@dnsservers[$i].protocol 2>/dev/null)"
port="$(uci -q get clashoo.@dnsservers[$i].ser_port 2>/dev/null)"
i=$((i + 1))
[ "$t" = "proxy-server-nameserver" ] || continue
[ "$en" = "0" ] && continue
if printf '%s' "$a" | grep -Eq '^[A-Za-z][A-Za-z0-9+.-]*://'; then
s="$a"
else
case "$p" in
''|none) prefix='' ;;
udp|udp://) prefix='udp://' ;;
tcp|tcp://) prefix='tcp://' ;;
dot|tls|tls://) prefix='tls://' ;;
doh|https|https://) prefix='https://' ;;
doq|quic|quic://) prefix='quic://' ;;
*) prefix="$p" ;;
esac
s="${prefix}${a}"
[ -n "$port" ] && s="${s}:${port}"
fi
[ -n "$s" ] && out="${out}${out:+ }${s}"
done
printf '%s' "$out"
}
_adapt_dns_loopback_resolver() {
local filter listen host host_pattern old_port servers replacement tmp
[ "$(uci -q get clashoo.config.dns_loopback_compat 2>/dev/null)" = "1" ] || return 0
@@ -1121,8 +1153,8 @@ _adapt_dns_loopback_resolver() {
servers="$(yq -M e -r '.dns."proxy-server-nameserver"[]' "$CONFIG_YAML" 2>/dev/null)"
printf '%s\n' "$servers" | grep -Eiq "^([A-Za-z][A-Za-z0-9+.-]*://)?(${host_pattern}):${old_port}($|[/#?])" || return 0
replacement="$(uci -q get clashoo.config.dns_loopback_compat_resolver 2>/dev/null)"
[ -n "$replacement" ] || replacement='udp://223.5.5.5:53 udp://119.29.29.29:53'
replacement="$(_dns_proxy_nameservers)"
[ -n "$replacement" ] || replacement='tls://1.1.1.1:853'
tmp="$(mktemp "${CONFIG_YAML}.dns-loopback.XXXXXX" 2>/dev/null)" || return 0
export CLASHOO_DNS_OLD_PORT="$old_port"
export CLASHOO_DNS_HOST_PATTERN="$host_pattern"
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 547 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 KiB

+1 -1
View File
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-clashoo
PKG_VERSION:=1.30.0
PKG_RELEASE:=15
PKG_RELEASE:=16
PKG_MAINTAINER:=kenzok8
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
@@ -1425,12 +1425,8 @@ return view.extend({
o.description = _("DNS queries follow the routing rules, so overseas domains resolve through the proxy instead of a polluted result. Requires proxy-server-nameserver.");
o = s.option(form.Flag, 'dns_loopback_compat', _("OpenClash/Nikki Loopback DNS Compatibility"));
o.default = '0';
o.description = _("Optional compatibility for normal managed mode. At runtime, replace only proxy node resolvers that point back to the imported configuration's own DNS listener. Core Only mode stays verbatim; the source configuration and unrelated local DNS services remain unchanged.");
o.description = _("Optional compatibility for normal managed mode. At runtime, replace only proxy node resolvers that point back to the imported configuration's own DNS listener with the proxy-server-nameserver setting. Core Only mode stays verbatim; the source configuration and unrelated local DNS services remain unchanged.");
o.depends('enable_dns', '1');
o = s.option(form.DynamicList, 'dns_loopback_compat_resolver', _("Loopback DNS Replacement"));
o.placeholder = 'udp://223.5.5.5:53';
o.description = _("Used only when the compatibility switch detects a stale self-reference. When empty, udp://223.5.5.5:53 and udp://119.29.29.29:53 are used. Plain IP DNS is recommended to avoid bootstrap loops.");
o.depends('dns_loopback_compat', '1');
o = s.option(form.Value, 'dns_ecs', _("ECS Client Subnet"));
o.placeholder = _("Recommended blank");
o.description = _("mihomo writes the ecs parameter to DNS URLs; sing-box writes dns.client_subnet. Leave empty to skip.");
+1 -7
View File
@@ -908,10 +908,7 @@ msgstr ""
msgid "Operation failed: "
msgstr ""
msgid "Loopback DNS Replacement"
msgstr ""
msgid "Optional compatibility for normal managed mode. At runtime, replace only proxy node resolvers that point back to the imported configuration's own DNS listener. Core Only mode stays verbatim; the source configuration and unrelated local DNS services remain unchanged."
msgid "Optional compatibility for normal managed mode. At runtime, replace only proxy node resolvers that point back to the imported configuration's own DNS listener with the proxy-server-nameserver setting. Core Only mode stays verbatim; the source configuration and unrelated local DNS services remain unchanged."
msgstr ""
msgid "Other Configuration Files (upload / overwrite output)"
@@ -1511,9 +1508,6 @@ msgstr ""
msgid "User-Agent (UA)"
msgstr ""
msgid "Used only when the compatibility switch detects a stale self-reference. When empty, udp://223.5.5.5:53 and udp://119.29.29.29:53 are used. Plain IP DNS is recommended to avoid bootstrap loops."
msgstr ""
msgid "Username"
msgstr ""
+2 -8
View File
@@ -912,14 +912,8 @@ msgstr "OpenClash 已启用,请先停用以避免规则冲突"
msgid "OpenClash/Nikki Loopback DNS Compatibility"
msgstr "OpenClash/Nikki 回环 DNS 兼容"
msgid "Loopback DNS Replacement"
msgstr "回环 DNS 替换地址"
msgid "Optional compatibility for normal managed mode. At runtime, replace only proxy node resolvers that point back to the imported configuration's own DNS listener. Core Only mode stays verbatim; the source configuration and unrelated local DNS services remain unchanged."
msgstr "用于普通接管模式的可选兼容功能。运行时仅替换指回导入配置自身 DNS 监听的节点解析器;仅内核模式保持原样,源配置和其他本地 DNS 服务不受影响。"
msgid "Used only when the compatibility switch detects a stale self-reference. When empty, udp://223.5.5.5:53 and udp://119.29.29.29:53 are used. Plain IP DNS is recommended to avoid bootstrap loops."
msgstr "仅在兼容开关检测到失效自引用时使用。留空则使用 udp://223.5.5.5:53 和 udp://119.29.29.29:53。建议使用纯 IP DNS,避免启动解析死循环。"
msgid "Optional compatibility for normal managed mode. At runtime, replace only proxy node resolvers that point back to the imported configuration's own DNS listener with the proxy-server-nameserver setting. Core Only mode stays verbatim; the source configuration and unrelated local DNS services remain unchanged."
msgstr "用于普通接管模式的可选兼容功能。运行时仅把指回导入配置自身 DNS 监听的节点解析器替换为 proxy-server-nameserver(节点域名解析)的设置;仅内核模式保持原样,源配置和其他本地 DNS 服务不受影响。"
msgid "Operation failed: "
msgstr "操作失败: "
+27 -3
View File
@@ -4,7 +4,25 @@ local uci = luci.model.uci.cursor()
local http = require "luci.http"
function index()
entry({"admin", "index"}, call("landing_page"), _("Home") , 1).dependent = false
entry({"admin", "index"}, call("landing_page"), _("Home") , 0).dependent = false
-- 2. 核心:直接改写 admin 根节点的调度目标
-- 这样当用户访问 /admin、登录后跳转或访问根目录时,无需经过 firstchild(),直接执行 landing_page()
local admin = node("admin")
if admin then
admin.target = call("landing_page")
end
end
local function check_wifi()
local has_wifi = false
pcall(function()
uci:foreach("wireless", "wifi-device", function(s)
has_wifi = true
return false -- 检测到任意 wifi-device 即终止遍历
end)
end)
return has_wifi
end
function landing_page()
@@ -22,7 +40,13 @@ function landing_page()
http.redirect(luci.dispatcher.build_url("admin","quickstart"));
end
else
http.redirect(luci.dispatcher.build_url("admin","status", "overview"))
end
if check_wifi() then
-- 具备无线功能,跳转至常用无线仪表盘界面
http.redirect(luci.dispatcher.build_url("admin", "dashboard"))
else
-- 无无线设备(纯有线环境),跳转至原生状态概览
http.redirect(luci.dispatcher.build_url("admin", "status", "overview"))
end
end
end
+3
View File
@@ -12,6 +12,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Home"
msgstr "首页"
msgid "Setup Wizard"
msgstr "快速设置向导"
+2 -2
View File
@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=v2ray-core
PKG_VERSION:=5.53.0
PKG_VERSION:=5.54.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=f2a78ff50ce36c4a577a39016485cdfb835a75137d514a0a5e8e9e983f0d38bb
PKG_HASH:=509aaf0d0c07d1d911223ad80a622e2e8eec214e6b950c1189187f25a7d779fb
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE