Browse Source

Refactor: make LAN into build script

SukkaW 1 year ago
parent
commit
d7a2476f90

+ 21 - 3
Build/build-domestic-ruleset.ts → Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts

@@ -1,7 +1,7 @@
 // @ts-check
 // @ts-check
 import path from 'path';
 import path from 'path';
 import { DOMESTICS } from '../Source/non_ip/domestic';
 import { DOMESTICS } from '../Source/non_ip/domestic';
-import { DIRECTS } from '../Source/non_ip/direct';
+import { DIRECTS, LANS } from '../Source/non_ip/direct';
 import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
 import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
 import { compareAndWriteFile, createRuleset } from './lib/create-file';
 import { compareAndWriteFile, createRuleset } from './lib/create-file';
 import { task } from './trace';
 import { task } from './trace';
@@ -11,6 +11,7 @@ import { createMemoizedPromise } from './lib/memo-promise';
 export const getDomesticAndDirectDomainsRulesetPromise = createMemoizedPromise(async () => {
 export const getDomesticAndDirectDomainsRulesetPromise = createMemoizedPromise(async () => {
   const domestics = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/domestic.conf'));
   const domestics = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/domestic.conf'));
   const directs = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/direct.conf'));
   const directs = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/direct.conf'));
+  const lans: string[] = [];
 
 
   Object.entries(DOMESTICS).forEach(([, { domains }]) => {
   Object.entries(DOMESTICS).forEach(([, { domains }]) => {
     domestics.push(...domains.map((domain) => `DOMAIN-SUFFIX,${domain}`));
     domestics.push(...domains.map((domain) => `DOMAIN-SUFFIX,${domain}`));
@@ -18,8 +19,11 @@ export const getDomesticAndDirectDomainsRulesetPromise = createMemoizedPromise(a
   Object.entries(DIRECTS).forEach(([, { domains }]) => {
   Object.entries(DIRECTS).forEach(([, { domains }]) => {
     directs.push(...domains.map((domain) => `DOMAIN-SUFFIX,${domain}`));
     directs.push(...domains.map((domain) => `DOMAIN-SUFFIX,${domain}`));
   });
   });
+  Object.entries(LANS).forEach(([, { domains }]) => {
+    lans.push(...domains.map((domain) => `DOMAIN-SUFFIX,${domain}`));
+  });
 
 
-  return [domestics, directs] as const;
+  return [domestics, directs, lans] as const;
 });
 });
 
 
 export const buildDomesticRuleset = task(import.meta.main, import.meta.path)(async (span) => {
 export const buildDomesticRuleset = task(import.meta.main, import.meta.path)(async (span) => {
@@ -54,6 +58,20 @@ export const buildDomesticRuleset = task(import.meta.main, import.meta.path)(asy
       path.resolve(import.meta.dir, '../List/non_ip/direct.conf'),
       path.resolve(import.meta.dir, '../List/non_ip/direct.conf'),
       path.resolve(import.meta.dir, '../Clash/non_ip/direct.txt')
       path.resolve(import.meta.dir, '../Clash/non_ip/direct.txt')
     ),
     ),
+    createRuleset(
+      span,
+      'Sukka\'s Ruleset - LAN',
+      [
+        ...SHARED_DESCRIPTION,
+        '',
+        'This file includes rules for LAN DOMAIN and reserved TLDs.'
+      ],
+      new Date(),
+      res[2],
+      'ruleset',
+      path.resolve(import.meta.dir, '../List/non_ip/lan.conf'),
+      path.resolve(import.meta.dir, '../Clash/non_ip/lan.txt')
+    ),
     compareAndWriteFile(
     compareAndWriteFile(
       span,
       span,
       [
       [
@@ -61,7 +79,7 @@ export const buildDomesticRuleset = task(import.meta.main, import.meta.path)(asy
         `#!desc=Last Updated: ${new Date().toISOString()}`,
         `#!desc=Last Updated: ${new Date().toISOString()}`,
         '',
         '',
         '[Host]',
         '[Host]',
-        ...([...Object.entries(DOMESTICS), ...Object.entries(DIRECTS)])
+        ...([...Object.entries(DOMESTICS), ...Object.entries(DIRECTS), ...Object.entries(LANS)])
           .flatMap(([, { domains, dns, ...rest }]) => [
           .flatMap(([, { domains, dns, ...rest }]) => [
             ...(
             ...(
               'hosts' in rest
               'hosts' in rest

+ 2 - 2
Build/build-sgmodule-always-realip.ts

@@ -1,11 +1,11 @@
 import path from 'path';
 import path from 'path';
 import { task } from './trace';
 import { task } from './trace';
 import { compareAndWriteFile } from './lib/create-file';
 import { compareAndWriteFile } from './lib/create-file';
-import { DIRECTS } from '../Source/non_ip/direct';
+import { DIRECTS, LANS } from '../Source/non_ip/direct';
 
 
 const HOSTNAMES = [
 const HOSTNAMES = [
   // Intranet, Router Setup, and mant more
   // Intranet, Router Setup, and mant more
-  ...(Object.entries(DIRECTS)).flatMap(([, { domains }]) => domains.flatMap((domain) => [`*.${domain}`, domain])),
+  ...([Object.entries(DIRECTS), Object.entries(LANS)]).flatMap(data => data.flatMap(([, { domains }]) => domains.flatMap((domain) => [`*.${domain}`, domain]))),
   // Network Detection, Captive Portal
   // Network Detection, Captive Portal
   'msftncsi.com',
   'msftncsi.com',
   'msftconnecttest.com',
   'msftconnecttest.com',

+ 1 - 8
Build/build-sspanel-appprofile.ts

@@ -1,5 +1,5 @@
 import { getAppleCdnDomainsPromise } from './build-apple-cdn';
 import { getAppleCdnDomainsPromise } from './build-apple-cdn';
-import { getDomesticAndDirectDomainsRulesetPromise } from './build-domestic-ruleset';
+import { getDomesticAndDirectDomainsRulesetPromise } from './build-domestic-direct-lan-ruleset-dns-mapping-module';
 import { surgeRulesetToClashClassicalTextRuleset, surgeDomainsetToClashRuleset } from './lib/clash';
 import { surgeRulesetToClashClassicalTextRuleset, surgeDomainsetToClashRuleset } from './lib/clash';
 import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
 import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
 import { task } from './trace';
 import { task } from './trace';
@@ -39,7 +39,6 @@ export const buildSSPanelUIMAppProfile = task(import.meta.main, import.meta.path
     steamDomains,
     steamDomains,
     globalDomains,
     globalDomains,
     telegramDomains,
     telegramDomains,
-    lanDomains,
     domesticCidrs,
     domesticCidrs,
     streamCidrs,
     streamCidrs,
     { results: rawTelegramCidrs },
     { results: rawTelegramCidrs },
@@ -62,8 +61,6 @@ export const buildSSPanelUIMAppProfile = task(import.meta.main, import.meta.path
     // global - domains
     // global - domains
     readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/global.conf')).then(surgeRulesetToClashClassicalTextRuleset),
     readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/global.conf')).then(surgeRulesetToClashClassicalTextRuleset),
     readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/telegram.conf')).then(surgeRulesetToClashClassicalTextRuleset),
     readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/telegram.conf')).then(surgeRulesetToClashClassicalTextRuleset),
-    // lan - domains
-    readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/lan.conf')),
     // domestic - ip cidr
     // domestic - ip cidr
     getChnCidrPromise().then(cidrs => cidrs.map(cidr => `IP-CIDR,${cidr}`)),
     getChnCidrPromise().then(cidrs => cidrs.map(cidr => `IP-CIDR,${cidr}`)),
     AllStreamServices.flatMap((i) => (
     AllStreamServices.flatMap((i) => (
@@ -100,7 +97,6 @@ export const buildSSPanelUIMAppProfile = task(import.meta.main, import.meta.path
       ...globalDomains,
       ...globalDomains,
       ...telegramDomains
       ...telegramDomains
     ],
     ],
-    lanDomains,
     domesticCidrs,
     domesticCidrs,
     streamCidrs,
     streamCidrs,
     [
     [
@@ -125,7 +121,6 @@ function generateAppProfile(
   steamDomains: string[],
   steamDomains: string[],
   globalDomains: string[],
   globalDomains: string[],
 
 
-  lanDomains: string[],
   directCidrs: string[],
   directCidrs: string[],
   streamCidrs: string[],
   streamCidrs: string[],
   globalCidrs: string[],
   globalCidrs: string[],
@@ -194,8 +189,6 @@ function generateAppProfile(
     // global - domains
     // global - domains
     ...globalDomains.map(line => `        '${line},Global',`),
     ...globalDomains.map(line => `        '${line},Global',`),
     // microsoft & apple - ip cidr (nope)
     // microsoft & apple - ip cidr (nope)
-    // lan - domains
-    ...lanDomains.map(line => `        '${line},DIRECT',`),
     // stream - ip cidr
     // stream - ip cidr
     ...streamCidrs.map(line => `        '${line},Stream',`),
     ...streamCidrs.map(line => `        '${line},Stream',`),
     // global - ip cidr
     // global - ip cidr

+ 1 - 1
Build/index.ts

@@ -10,7 +10,7 @@ import { buildTelegramCIDR } from './build-telegram-cidr';
 import { buildChnCidr } from './build-chn-cidr';
 import { buildChnCidr } from './build-chn-cidr';
 import { buildSpeedtestDomainSet } from './build-speedtest-domainset';
 import { buildSpeedtestDomainSet } from './build-speedtest-domainset';
 import { buildInternalReverseChnCIDR } from './build-internal-reverse-chn-cidr';
 import { buildInternalReverseChnCIDR } from './build-internal-reverse-chn-cidr';
-import { buildDomesticRuleset } from './build-domestic-ruleset';
+import { buildDomesticRuleset } from './build-domestic-direct-lan-ruleset-dns-mapping-module';
 import { buildStreamService } from './build-stream-service';
 import { buildStreamService } from './build-stream-service';
 
 
 import { buildRedirectModule } from './build-sgmodule-redirect';
 import { buildRedirectModule } from './build-sgmodule-redirect';

+ 5 - 2
Source/non_ip/direct.ts

@@ -78,7 +78,10 @@ export const DIRECTS = {
       'injections.adguard.org',
       'injections.adguard.org',
       'local.adguard.org'
       'local.adguard.org'
     ]
     ]
-  },
+  }
+} as const;
+
+export const LANS = {
   LAN: {
   LAN: {
     dns: 'system',
     dns: 'system',
     domains: [
     domains: [
@@ -108,4 +111,4 @@ export const DIRECTS = {
       '254.169.in-addr.arpa'
       '254.169.in-addr.arpa'
     ]
     ]
   }
   }
-} as const;
+};

+ 0 - 28
Source/non_ip/lan.conf

@@ -1,28 +0,0 @@
-# $ meta_title Sukka's Ruleset - LAN
-# $ meta_description Includes rules for LAN DOMAIN and .local suffix.
-
-# Add DOMAIN-SUFFIX here anyway, since they always require DNS lookup.
-DOMAIN-SUFFIX,local
-
-# AS112
-# List from https://blog.cloudflare.com/the-as112-project/
-DOMAIN-SUFFIX,home.arpa
-DOMAIN-SUFFIX,10.in-addr.arpa
-DOMAIN-SUFFIX,16.172.in-addr.arpa
-DOMAIN-SUFFIX,17.172.in-addr.arpa
-DOMAIN-SUFFIX,18.172.in-addr.arpa
-DOMAIN-SUFFIX,19.172.in-addr.arpa
-DOMAIN-SUFFIX,20.172.in-addr.arpa
-DOMAIN-SUFFIX,21.172.in-addr.arpa
-DOMAIN-SUFFIX,22.172.in-addr.arpa
-DOMAIN-SUFFIX,23.172.in-addr.arpa
-DOMAIN-SUFFIX,24.172.in-addr.arpa
-DOMAIN-SUFFIX,25.172.in-addr.arpa
-DOMAIN-SUFFIX,26.172.in-addr.arpa
-DOMAIN-SUFFIX,27.172.in-addr.arpa
-DOMAIN-SUFFIX,28.172.in-addr.arpa
-DOMAIN-SUFFIX,29.172.in-addr.arpa
-DOMAIN-SUFFIX,30.172.in-addr.arpa
-DOMAIN-SUFFIX,31.172.in-addr.arpa
-DOMAIN-SUFFIX,168.192.in-addr.arpa
-DOMAIN-SUFFIX,254.169.in-addr.arpa