From 3679024ed8894168da65207ccf27f50f00534e59 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 14 Feb 2025 00:39:10 +0800 Subject: [PATCH] Add Hosts section for Local Host Mapping --- ...omestic-direct-lan-ruleset-dns-mapping-module.ts | 6 +++--- Source/non_ip/direct.ts | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 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 7f3f88ee..c838e88a 100644 --- a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts +++ b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts @@ -1,7 +1,7 @@ // @ts-check import path from 'node:path'; import { DOMESTICS, DOH_BOOTSTRAP, AdGuardHomeDNSMapping } from '../Source/non_ip/domestic'; -import { DIRECTS, LAN } from '../Source/non_ip/direct'; +import { DIRECTS, HOSTS, LAN } from '../Source/non_ip/direct'; import type { DNSMapping } from '../Source/non_ip/direct'; import { readFileIntoProcessedArray } from './lib/fetch-text-by-line'; import { compareAndWriteFile } from './lib/create-file'; @@ -79,7 +79,7 @@ export const getDomesticAndDirectDomainsRulesetPromise = createMemoizedPromise(a export const buildDomesticRuleset = task(require.main === module, __filename)(async (span) => { const [domestics, directs, lans] = await getDomesticAndDirectDomainsRulesetPromise(); - const dataset: Array<[name: string, DNSMapping]> = ([DOH_BOOTSTRAP, DOMESTICS, DIRECTS, LAN] as const).flatMap(Object.entries); + const dataset: Array<[name: string, DNSMapping]> = ([DOH_BOOTSTRAP, DOMESTICS, DIRECTS, LAN, HOSTS] as const).flatMap(Object.entries); return Promise.all([ new RulesetOutput(span, 'domestic', 'non_ip') @@ -232,7 +232,7 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as 'https://1.12.12.12/dns-query', 'https://120.53.53.53/dns-query', '[//]udp://10.10.1.1:53', - ...(([DOMESTICS, DIRECTS, LAN] as const).flatMap(Object.values) as DNSMapping[]).flatMap(({ domains, dns: _dns }) => domains.flatMap((domain) => { + ...(([DOMESTICS, DIRECTS, LAN, HOSTS] as const).flatMap(Object.values) as DNSMapping[]).flatMap(({ domains, dns: _dns }) => domains.flatMap((domain) => { let dns; if (_dns in AdGuardHomeDNSMapping) { dns = AdGuardHomeDNSMapping[_dns as keyof typeof AdGuardHomeDNSMapping].join(' '); diff --git a/Source/non_ip/direct.ts b/Source/non_ip/direct.ts index 5ce21f6f..fb440407 100644 --- a/Source/non_ip/direct.ts +++ b/Source/non_ip/direct.ts @@ -142,3 +142,16 @@ export const LAN = { ] } } as const satisfies Record; + +export const HOSTS = { + HOSTS: { + // not actually used, only for a placeholder + dns: 'quic://dns.alidns.com:853', + hosts: { + 'cdn.jsdelivr.net': ['cdn.jsdelivr.net.cdn.cloudflare.net'] + }, + realip: false, + ruleset: false, + domains: [] + } +} as const satisfies Record;