From f57093df6a4182473ce0d1e89314e4872daaa11a Mon Sep 17 00:00:00 2001 From: SukkaW Date: Tue, 18 Jul 2023 20:16:20 +0800 Subject: [PATCH] Add internal reverse chnroute build --- ...l-rules.js => build-internal-cdn-rules.js} | 0 Build/build-internal-reverse-chn-cidr.js | 48 +++++++++++++++++++ package.json | 18 ++++--- pnpm-lock.yaml | 8 ++-- 4 files changed, 64 insertions(+), 10 deletions(-) rename Build/{build-internal-rules.js => build-internal-cdn-rules.js} (100%) create mode 100644 Build/build-internal-reverse-chn-cidr.js diff --git a/Build/build-internal-rules.js b/Build/build-internal-cdn-rules.js similarity index 100% rename from Build/build-internal-rules.js rename to Build/build-internal-cdn-rules.js diff --git a/Build/build-internal-reverse-chn-cidr.js b/Build/build-internal-reverse-chn-cidr.js new file mode 100644 index 00000000..753fe12f --- /dev/null +++ b/Build/build-internal-reverse-chn-cidr.js @@ -0,0 +1,48 @@ +// @ts-check +const { fetchRemoteTextAndCreateReadlineInterface } = require('./lib/fetch-remote-text-by-line'); +const { processLine } = require('./lib/process-line'); +const path = require('path'); +const fse = require('fs-extra'); +const fs = require('fs'); + +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.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' +]; + +(async () => { + const { exclude } = await import('cidr-tools-wasm'); + + /** @type {Set} */ + const cidr = new Set(); + for await (const line of await fetchRemoteTextAndCreateReadlineInterface('https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt')) { + const l = processLine(line); + if (l) { + cidr.add(l); + } + } + + const reversedCidr = exclude( + ['0.0.0.0/0'], + RESERVED_IPV4_CIDR.concat(Array.from(cidr)) + ); + + await fse.ensureDir(path.resolve(__dirname, '../List/internal')); + await fs.promises.writeFile( + path.resolve(__dirname, '../List/internal/cdn.txt'), + `${reversedCidr.join('\n')}\n` + ); +})(); diff --git a/package.json b/package.json index df0cd4e7..180c05c6 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "build:phishing-domainset": "wireit", "build:telegram-cidr": "wireit", "build:chn-cidr": "wireit", - "build:internal-rules": "wireit", + "build:internal-cdn-rules": "wireit", + "build:internal-reverse-chn-cidr": "wireit", "validate:domainset": "wireit" }, "wireit": { @@ -64,19 +65,23 @@ "download-previous-build" ] }, - "build:internal-rules": { - "command": "node ./Build/build-internal-rules.js", + "build:internal-cdn-rules": { + "command": "node ./Build/build-internal-cdn-rules.js", "dependencies": [ "build:cdn-conf" ] }, + "build:internal-reverse-chn-cidr": { + "command": "node ./Build/build-internal-reverse-chn-cidr.js" + }, "build:public": { "command": "node ./Build/build-public.js", "dependencies": [ "build:anti-bogus-domain", "build:apple-cdn", "build:cdn-conf", - "build:internal-rules", + "build:internal-cdn-rules", + "build:internal-reverse-chn-cidr", "build:reject-domainset", "build:telegram-cidr" ] @@ -98,7 +103,8 @@ "build:reject-domainset", "build:telegram-cidr", "build:chn-cidr", - "build:internal-rules", + "build:internal-cdn-rules", + "build:internal-reverse-chn-cidr", "build:public", "validate:domainset" ] @@ -115,7 +121,7 @@ "@sukka/listdir": "^0.2.0", "@vercel/fetch-retry": "^5.1.3", "ci-info": "^3.8.0", - "cidr-tools-wasm": "^0.0.7", + "cidr-tools-wasm": "^0.0.10", "fs-extra": "^11.1.1", "picocolors": "^1.0.0", "piscina": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4dbe411..613ea2ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ dependencies: specifier: ^3.8.0 version: 3.8.0 cidr-tools-wasm: - specifier: ^0.0.7 - version: 0.0.7 + specifier: ^0.0.10 + version: 0.0.10 fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -444,8 +444,8 @@ packages: engines: {node: '>=8'} dev: false - /cidr-tools-wasm@0.0.7: - resolution: {integrity: sha512-3pxBac4rB6Aoj/CkS0DfQlnNskH1Dq7YNtcxkPjiroLFVJ3TQT680VZ5HRrmigVlwK8ntS3ZNQMQDsI3q7JQ4A==} + /cidr-tools-wasm@0.0.10: + resolution: {integrity: sha512-P1l8AWtMe7WA01RLao9fTYAtuIwAZJaunuXJ7iFlJ3k/L1oEBsWi82ZzBW3mYwhMiFWZ8CTqv0aWRKKFxUsMJQ==} dev: false /cliui@7.0.4: