update 2026-11-05 05:40:53

This commit is contained in:
action committed 2026-11-05 05:40:53 +08:00
1 parent 3cdb943a21
commit e54c41d8c1
161 files changed
+115 -37847

No files matched your search

+2 -2
View File
@@ -5,8 +5,8 @@ PKG_UPSTREAM_VERSION:=1.19.33
PKG_UPSTREAM_TAG:=v$(PKG_UPSTREAM_VERSION)
PKG_SHORT_SHA:=3f27ef3
PKG_VERSION:=2026.10.25.$(PKG_UPSTREAM_VERSION)
PKG_RELEASE:=5
PKG_VERSION:=2026.11.04.$(PKG_UPSTREAM_VERSION)
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA)
+29
View File
@@ -1551,6 +1551,34 @@ _ensure_cn_domain_rule_provider() {
' "$CONFIG_YAML" 2>/dev/null || true
}
# fake-ip-filter 引用当前配置没定义的 rule-set 时,mihomo 会拒绝启动
# (dns.fake-ip-filter[i] "RULE-SET,x,real-ip": rule-set 'x' not found)。
# 切换配置后最常出现,启动前丢掉并记日志,免得整机莫名断网。
prune_fakeip_missing_rulesets() {
command -v yq >/dev/null 2>&1 || return 0
[ -s "$CONFIG_YAML" ] || return 0
local providers entry _rs
providers="$(yq -M e -r '.rule-providers // {} | keys | .[]' "$CONFIG_YAML" 2>/dev/null)"
yq -M e -r '.dns."fake-ip-filter" // [] | .[]' "$CONFIG_YAML" 2>/dev/null |
while IFS= read -r entry; do
case "$entry" in
RULE-SET,*|rule-set:*) ;;
*) continue ;;
esac
_rs="${entry#RULE-SET,}"
_rs="${_rs#rule-set:}"
_rs="${_rs%%,*}"
[ -n "$_rs" ] || continue
printf '%s\n' "$providers" | grep -Fxq "$_rs" && continue
CLASHOO_DROP_ENTRY="$entry" yq -M e -i \
'.dns."fake-ip-filter" = [.dns."fake-ip-filter"[] | select(. != strenv(CLASHOO_DROP_ENTRY))]' \
"$CONFIG_YAML" 2>/dev/null || true
log_msg "Skipped fake-ip-filter entry, rule-set not found: $entry" "已跳过 fake-ip-filter 条目,规则集不存在:$entry"
done
}
append_luci_fake_ip_filter_extras() {
[ -n "${CLASHOO_KEEP_FAKEIP_FILTER:-}" ] || return 0
command -v yq >/dev/null 2>&1 || return 0
@@ -2252,6 +2280,7 @@ _start_prepare_config() {
[ "$_reload_candidate" = "1" ] || _prepare_geo_bootstrap_mode
_remap_dns_system_nameserver >/dev/null 2>&1
ensure_dns_cn_policy_fallback >/dev/null 2>&1
prune_fakeip_missing_rulesets
if [ ! -f "$CONFIG_YAML" ];then
@@ -175,7 +175,7 @@ function dns_server(address, protocol, port) {
let dns_roles = {};
uci.foreach('clashoo', 'dnsservers', function(sec) {
if (b(sec.enabled) == false) return;
if (sec.enabled != null && b(sec.enabled) == false) return;
let role = s(sec.ser_type, 'nameserver');
if (role == 'fallback' && cfg['dns']['enhanced-mode'] == 'fake-ip') return;
let srv = dns_server(sec.ser_address, sec.protocol, sec.ser_port);
@@ -202,7 +202,7 @@ if (length(bootstrap) && (!dns_present['default-nameserver'] || dns_force['defau
let policies = {};
let proxy_policies = {};
uci.foreach('clashoo', 'dns_policy', function(sec) {
if (b(sec.enabled) == false) return;
if (sec.enabled != null && b(sec.enabled) == false) return;
let role = s(sec.policy_type, 'nameserver-policy');
if (role != 'nameserver-policy' && role != 'proxy-server-nameserver-policy') return;
let matcher = trim(sec.matcher || '');
@@ -252,7 +252,7 @@ if (need_cn_rs) {
if (ab('authentication')) {
cfg['authentication'] = [];
uci.foreach('clashoo', 'authentication', function(sec) {
if (b(sec.enabled) == false) return;
if (sec.enabled != null && b(sec.enabled) == false) return;
let user = trim(sec.username || '');
let pass = trim(sec.password || '');
if (user) push(cfg['authentication'], user + ':' + pass);
@@ -262,7 +262,7 @@ if (ab('authentication')) {
/* ── hosts ────────────────────────────────────────── */
cfg['hosts'] = {};
uci.foreach('clashoo', 'hosts', function(sec) {
if (b(sec.enabled) == false) return;
if (sec.enabled != null && b(sec.enabled) == false) return;
let domain = trim(sec.adress || '');
let ip = trim(sec.ip || '');
if (domain && ip) cfg['hosts'][domain] = ip;