From 51f1c898a302b1eaf33a40a51e4947310d53be7f Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 1 Jul 2026 05:16:43 +0800 Subject: [PATCH] Fix: Mihomo Name Server Policy Wildcard Handling --- ...c-direct-lan-ruleset-dns-mapping-module.ts | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts index bff6cb41..4253bb02 100644 --- a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts +++ b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts @@ -149,18 +149,40 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as ); domains.forEach((domain) => { + const isWildcard = domain.includes('*') || domain.includes('?'); switch (domain[0]) { - case '$': - surgeOutput.addDomain(domain.slice(1)); - mihomoOutput.addDomain(domain.slice(1)); + case '$': { + const d = domain.slice(1); + if (isWildcard) { + surgeOutput.addDomainWildcard(d); + mihomoOutput.addDomainWildcard(d); + } else { + surgeOutput.addDomain(d); + mihomoOutput.addDomain(d); + } break; - case '+': - surgeOutput.addDomainSuffix(domain.slice(1)); - mihomoOutput.addDomainSuffix(domain.slice(1)); + } + case '+': { + const d = domain.slice(1); + if (isWildcard) { + surgeOutput.addDomainWildcard(`*.${d}`); + mihomoOutput.addDomainWildcard(`*.${d}`); + } else { + surgeOutput.addDomainSuffix(d); + mihomoOutput.addDomainSuffix(d); + } break; + } default: - surgeOutput.addDomainSuffix(domain); - mihomoOutput.addDomainSuffix(domain); + if (isWildcard) { + surgeOutput.addDomainWildcard(domain); + surgeOutput.addDomainWildcard(`*.${domain}`); + mihomoOutput.addDomainWildcard(domain); + mihomoOutput.addDomainWildcard(`*.${domain}`); + } else { + surgeOutput.addDomainSuffix(domain); + mihomoOutput.addDomainSuffix(domain); + } break; } });