From 0622d5ea71df142a088e40ffffe1aec6e465717b Mon Sep 17 00:00:00 2001 From: SukkaW Date: Mon, 11 Mar 2024 00:41:02 +0800 Subject: [PATCH] Re-enable Reverse CHN CIDR build --- Build/build-chn-cidr.ts | 14 +------ Build/build-internal-reverse-chn-cidr.ts | 38 ++++--------------- Build/constants/cidr.ts | 29 ++++++++++++++ Build/index.ts | 17 ++------- Build/trace/index.ts | 2 +- .../build-internal-reverse-chn-cidr-worker.ts | 19 ---------- 6 files changed, 44 insertions(+), 75 deletions(-) create mode 100644 Build/constants/cidr.ts delete mode 100644 Build/workers/build-internal-reverse-chn-cidr-worker.ts diff --git a/Build/build-chn-cidr.ts b/Build/build-chn-cidr.ts index 476ee1bf..bbc1c098 100644 --- a/Build/build-chn-cidr.ts +++ b/Build/build-chn-cidr.ts @@ -5,22 +5,12 @@ import { processLineFromReadline } from './lib/process-line'; import { task } from './trace'; import { exclude } from 'fast-cidr-tools'; -import picocolors from 'picocolors'; import { createMemoizedPromise } from './lib/memo-promise'; - -// https://github.com/misakaio/chnroutes2/issues/25 -const EXCLUDE_CIDRS = [ - '223.118.0.0/15', - '223.120.0.0/15' -]; - -const INCLUDE_CIDRS = [ - '211.99.96.0/19' // wy.com.cn -]; +import { CN_CIDR_NOT_INCLUDED_IN_CHNROUTE, NON_CN_CIDR_INCLUDED_IN_CHNROUTE } from './constants/cidr'; export const getChnCidrPromise = createMemoizedPromise(async () => { const cidr = await processLineFromReadline(await fetchRemoteTextByLine('https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt')); - return exclude([...cidr, ...INCLUDE_CIDRS], EXCLUDE_CIDRS, true); + return exclude([...cidr, ...CN_CIDR_NOT_INCLUDED_IN_CHNROUTE], NON_CN_CIDR_INCLUDED_IN_CHNROUTE, true); }); export const buildChnCidr = task(import.meta.path, async (span) => { diff --git a/Build/build-internal-reverse-chn-cidr.ts b/Build/build-internal-reverse-chn-cidr.ts index af53ac63..e74fe673 100644 --- a/Build/build-internal-reverse-chn-cidr.ts +++ b/Build/build-internal-reverse-chn-cidr.ts @@ -1,49 +1,27 @@ -import { fetchRemoteTextByLine } from './lib/fetch-text-by-line'; -import { processLineFromReadline } from './lib/process-line'; import path from 'path'; import { task } from './trace'; import { exclude, merge } from 'fast-cidr-tools'; import { getChnCidrPromise } from './build-chn-cidr'; +import { NON_CN_CIDR_INCLUDED_IN_CHNROUTE, RESERVED_IPV4_CIDR } from './constants/cidr'; -// https://en.wikipedia.org/wiki/Reserved_IP_addresses -const RESERVED_IPV4_CIDR = [ - '0.0.0.0/8', - '10.0.0.0/8', - '100.64.0.0/10', - '127.0.0.0/8', - '169.254.0.0/16', - '172.16.0.0/12', - '192.0.0.0/24', - '192.0.2.0/24', - // 192.88.99.0 // is currently being broadcast by HE and Comcast - '192.168.0.0/16', - '198.18.0.0/15', - '198.51.100.0/24', - '203.0.113.0/24', - '224.0.0.0/4', - '233.252.0.0/24', - '240.0.0.0/4' -]; - -export const buildInternalReverseChnCIDR = task(import.meta.path, async (span) => { +export const buildInternalReverseChnCIDR = task(import.meta.path, async () => { const cidrPromise = getChnCidrPromise(); const peeked = Bun.peek(cidrPromise); const cidr: string[] = peeked === cidrPromise - ? await span.traceChildPromise('download chnroutes2', cidrPromise) + ? await cidrPromise : (peeked as string[]); - const reversedCidr = span.traceChildSync('build reversed chn cidr', () => merge( + const reversedCidr = merge( exclude( ['0.0.0.0/0'], RESERVED_IPV4_CIDR.concat(cidr), true - ).concat([ + ).concat( // https://github.com/misakaio/chnroutes2/issues/25 - '223.118.0.0/15', - '223.120.0.0/15' - ]) - )); + NON_CN_CIDR_INCLUDED_IN_CHNROUTE + ) + ); return Bun.write(path.resolve(import.meta.dir, '../List/internal/reversed-chn-cidr.txt'), `${reversedCidr.join('\n')}\n`); }); diff --git a/Build/constants/cidr.ts b/Build/constants/cidr.ts new file mode 100644 index 00000000..cb0734b0 --- /dev/null +++ b/Build/constants/cidr.ts @@ -0,0 +1,29 @@ +// https://en.wikipedia.org/wiki/Reserved_IP_addresses +export const RESERVED_IPV4_CIDR = [ + '0.0.0.0/8', + '10.0.0.0/8', + '100.64.0.0/10', + '127.0.0.0/8', + '169.254.0.0/16', + '172.16.0.0/12', + '192.0.0.0/24', + '192.0.2.0/24', + // 192.88.99.0 // is currently being broadcast by HE and Comcast + '192.168.0.0/16', + '198.18.0.0/15', + '198.51.100.0/24', + '203.0.113.0/24', + '224.0.0.0/4', + '233.252.0.0/24', + '240.0.0.0/4' +]; + +// https://github.com/misakaio/chnroutes2/issues/25 +export const NON_CN_CIDR_INCLUDED_IN_CHNROUTE = [ + '223.118.0.0/15', + '223.120.0.0/15' +]; + +export const CN_CIDR_NOT_INCLUDED_IN_CHNROUTE = [ + '211.99.96.0/19' // wy.com.cn +]; diff --git a/Build/index.ts b/Build/index.ts index 5ade4f39..bc893d56 100644 --- a/Build/index.ts +++ b/Build/index.ts @@ -9,6 +9,7 @@ import { buildChnCidr } from './build-chn-cidr'; import { buildSpeedtestDomainSet } from './build-speedtest-domainset'; import { buildInternalCDNDomains } from './build-internal-cdn-rules'; // import { buildInternalChnDomains } from './build-internal-chn-domains'; +import { buildInternalReverseChnCIDR } from './build-internal-reverse-chn-cidr'; import { buildDomesticRuleset } from './build-domestic-ruleset'; import { buildStreamService } from './build-stream-service'; @@ -33,7 +34,6 @@ import { createSpan, printTraceResult } from './trace'; const rootSpan = createSpan('root'); try { - // TODO: restore this once Bun has fixed their worker // const buildInternalReverseChnCIDRWorker = new Worker(new URL('./workers/build-internal-reverse-chn-cidr-worker.ts', import.meta.url)); const downloadPreviousBuildPromise = downloadPreviousBuild(rootSpan); @@ -51,17 +51,7 @@ import { createSpan, printTraceResult } from './trace'; buildCdnConfPromise ]).then(() => buildInternalCDNDomains(rootSpan)); - // const buildInternalReverseChnCIDRPromise = new Promise(resolve => { - // const handleMessage = (e: MessageEvent) => { - // const { data } = e; - - // buildInternalReverseChnCIDRWorker.postMessage('exit'); - // buildInternalReverseChnCIDRWorker.removeEventListener('message', handleMessage); - // resolve(data); - // }; - // buildInternalReverseChnCIDRWorker.addEventListener('message', handleMessage); - // buildInternalReverseChnCIDRWorker.postMessage('build'); - // }); + const buildInternalReverseChnCIDRPromise = buildInternalReverseChnCIDR(rootSpan); // const buildInternalChnDomainsPromise = buildInternalChnDomains(); const buildDomesticRulesetPromise = downloadPreviousBuildPromise.then(() => buildDomesticRuleset(rootSpan)); @@ -92,7 +82,8 @@ import { createSpan, printTraceResult } from './trace'; buildChnCidrPromise, buildSpeedtestDomainSetPromise, buildInternalCDNDomainsPromise, - // buildInternalReverseChnCIDRPromise, + buildInternalReverseChnCIDRPromise, + buildInternalReverseChnCIDRPromise, // buildInternalChnDomainsPromise, buildDomesticRulesetPromise, buildRedirectModulePromise, diff --git a/Build/trace/index.ts b/Build/trace/index.ts index 661ce29c..ae82da27 100644 --- a/Build/trace/index.ts +++ b/Build/trace/index.ts @@ -114,7 +114,7 @@ export const task = (importMetaPath: string, fn: (span: Span) => T, customnam const taskName = customname ?? path.basename(importMetaPath, path.extname(importMetaPath)); return async (span?: Span) => { if (span) { - return span.traceChild(taskName).traceAsyncFn(fn); + return span.traceChildAsync(taskName, fn); } return fn(createSpan(taskName)); }; diff --git a/Build/workers/build-internal-reverse-chn-cidr-worker.ts b/Build/workers/build-internal-reverse-chn-cidr-worker.ts deleted file mode 100644 index c692fe00..00000000 --- a/Build/workers/build-internal-reverse-chn-cidr-worker.ts +++ /dev/null @@ -1,19 +0,0 @@ -declare const self: Worker; - -import { buildInternalReverseChnCIDR } from '../build-internal-reverse-chn-cidr'; - -// preload the task -const promise = buildInternalReverseChnCIDR(); - -const handleMessage = async (e: MessageEvent<'build' | 'exit'>) => { - if (e.data === 'build') { - const stat = await promise; - postMessage(stat); - } else /* if (e.data === 'exit') */ { - self.removeEventListener('message', handleMessage); - self.unref(); - self.terminate(); - } -}; - -self.addEventListener('message', handleMessage);