From b388936bf3124348dd6699eea1680c6e5873a322 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 19 Nov 2025 23:20:50 +0800 Subject: [PATCH] Chore: print gfwlist validation count --- Build/lib/trie.ts | 13 ++++++------- Build/validate-gfwlist.ts | 12 +++++++++++- Source/non_ip/global.conf | 2 ++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Build/lib/trie.ts b/Build/lib/trie.ts index 6285a780..42328146 100644 --- a/Build/lib/trie.ts +++ b/Build/lib/trie.ts @@ -23,10 +23,11 @@ type TrieNode = [ function deepTrieNodeToJSON(node: TrieNode, unpackMeta: ((meta?: Meta) => string) | undefined) { - const obj: Record = {}; + const obj: Record = { + ['[start]']: getBit(node[0], START), + ['[subdomain]']: getBit(node[0], INCLUDE_ALL_SUBDOMAIN) + }; - obj['[start]'] = getBit(node[0], START); - obj['[subdomain]'] = getBit(node[0], INCLUDE_ALL_SUBDOMAIN); if (node[4] != null) { if (unpackMeta) { obj['[meta]'] = unpackMeta(node[4]); @@ -278,12 +279,10 @@ abstract class Triebase { ) { const dfsImpl = withSort ? Triebase.dfsWithSort : Triebase.dfs; - const nodeStack: Array> = []; - nodeStack.push(initialNode); + const nodeStack: Array> = [initialNode]; // Resolving initial string (begin the start of the stack) - const suffixStack: string[][] = []; - suffixStack.push(initialSuffix); + const suffixStack: string[][] = [initialSuffix]; let node: TrieNode = initialNode; let r; diff --git a/Build/validate-gfwlist.ts b/Build/validate-gfwlist.ts index fc8395bd..1ddfc8dd 100644 --- a/Build/validate-gfwlist.ts +++ b/Build/validate-gfwlist.ts @@ -57,6 +57,8 @@ export async function parseGfwList() { const whiteSet = new Set(); const gfwListTrie = new HostnameSmolTrie(); + let totalGfwSize = 0; + const gfwlistIgnoreLineKwfilter = createKeywordFilter([ '.*', '*', @@ -100,14 +102,17 @@ export async function parseGfwList() { } const d = fastNormalizeDomain(line); if (d) { + totalGfwSize++; gfwListTrie.add(d); continue; } } for await (const l of await fetchRemoteTextByLine('https://raw.githubusercontent.com/Loyalsoldier/cn-blocked-domain/release/domains.txt', true)) { + totalGfwSize++; gfwListTrie.add(l); } for await (const l of await fetchRemoteTextByLine('https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/gfw.txt', true)) { + totalGfwSize++; gfwListTrie.add(l); } @@ -147,6 +152,9 @@ export async function parseGfwList() { whiteSet.forEach(domain => gfwListTrie.whitelist(domain, true)); + let gfwListSize = 0; + gfwListTrie.dump(() => gfwListSize++); + const kwfilter = createKeywordFilter([...keywordSet]); const missingTop10000Gfwed = new Set(); @@ -158,7 +166,7 @@ export async function parseGfwList() { }); console.log(Array.from(missingTop10000Gfwed).join('\n')); - console.log('', missingTop10000Gfwed.size); + console.log({ totalGfwSize, gfwListSize, missingSize: missingTop10000Gfwed.size }); return [ whiteSet, @@ -170,3 +178,5 @@ export async function parseGfwList() { if (require.main === module) { parseGfwList().catch(console.error); } + +// python.com waiting-for-sell diff --git a/Source/non_ip/global.conf b/Source/non_ip/global.conf index f32ec3bc..c179f5bc 100644 --- a/Source/non_ip/global.conf +++ b/Source/non_ip/global.conf @@ -577,6 +577,7 @@ DOMAIN-SUFFIX,atlassian.com DOMAIN-SUFFIX,atlassian.net DOMAIN-SUFFIX,autodesk.com DOMAIN-SUFFIX,auth0.com +DOMAIN-SUFFIX,av-wiki.net DOMAIN-SUFFIX,av28.com DOMAIN-SUFFIX,avg.com DOMAIN-SUFFIX,avgle.com @@ -1041,6 +1042,7 @@ DOMAIN-SUFFIX,packagephobia.com DOMAIN-SUFFIX,pagesix.com DOMAIN-SUFFIX,pastebin.com DOMAIN-SUFFIX,patreon.com +DOMAIN-SUFFIX,pawoo.net DOMAIN-SUFFIX,peeringdb.com DOMAIN-SUFFIX,perplexity.ai DOMAIN-SUFFIX,pigav.com