瀏覽代碼

Fix: Mihomo Name Server Policy Wildcard Handling

SukkaW 4 周之前
父節點
當前提交
51f1c898a3
共有 1 個文件被更改,包括 30 次插入8 次删除
  1. 30 8
      Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts

+ 30 - 8
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;
         }
       });