| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import path from 'node:path';
- import { SOURCE_DIR } from './constants/dir';
- import { parseFelixDnsmasqFromResp } from './lib/parse-dnsmasq';
- import { $$fetch } from './lib/fetch-retry';
- import runAgainstSourceFile from './lib/run-against-source-file';
- import { getTopOneMillionDomains } from './validate-gfwlist';
- import { HostnameSmolTrie } from './lib/trie';
- import tldts from 'tldts-experimental';
- import { DOMESTICS } from '../Source/non_ip/domestic';
- export async function parseDomesticList() {
- const allChinaDomains = new Set<string>(await parseFelixDnsmasqFromResp(await $$fetch('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf')));
- const topDomainTrie = await getTopOneMillionDomains();
- const resultTrie = new HostnameSmolTrie();
- topDomainTrie.dumpWithoutDot((domain) => {
- const apexDomain = tldts.getDomain(domain);
- if (apexDomain && allChinaDomains.has(apexDomain)) {
- resultTrie.add(apexDomain, false);
- }
- });
- const callback = (domain: string, includeAllSubdomain: boolean) => resultTrie.whitelist(domain, includeAllSubdomain);
- // await Promise.all([
- await runAgainstSourceFile(
- path.resolve(SOURCE_DIR, 'non_ip/domestic.conf'),
- callback
- );
- await runAgainstSourceFile(
- path.resolve(SOURCE_DIR, 'domainset/reject.conf'),
- callback
- );
- Object.values(DOMESTICS).forEach(domestic => {
- domestic.domains.forEach(domain => {
- switch (domain[0]) {
- case '+':
- case '$': {
- resultTrie.whitelist(domain.slice(1), true);
- break;
- }
- default: {
- resultTrie.whitelist(domain, true);
- break;
- }
- }
- });
- });
- // noop, DOMAIN-KEYWORD handing
- // for (const d of top5000) {
- // if (d.includes(domain)) {
- // notIncludedDomestic.delete(d);
- // }
- // }
- // ]);
- console.log(resultTrie.dump().join('\n') + '\n');
- }
- if (require.main === module) {
- parseDomesticList().catch(console.error);
- }
|