From ec0ce5548757180993e6ac8bfb0e1bcf27dd9484 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 25 Oct 2024 02:16:02 +0800 Subject: [PATCH] Feat: include `DOMAIN-WILDCARD` in AdGuardHome output --- Build/build-reject-domainset.ts | 28 ++++++---------------------- Build/lib/rules/domainset.ts | 9 +++++++++ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/Build/build-reject-domainset.ts b/Build/build-reject-domainset.ts index 437eca3f..e6059734 100644 --- a/Build/build-reject-domainset.ts +++ b/Build/build-reject-domainset.ts @@ -101,28 +101,12 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as getPhishingDomains(childSpan).then(appendArrayToRejectExtraOutput), readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject_sukka.conf')).then(appendArrayToRejectOutput), // Dedupe domainSets - span.traceChildAsync('collect black keywords/suffixes', async () => { - /** Collect DOMAIN-KEYWORD from non_ip/reject.conf for deduplication */ - for await (const line of readFileByLine(path.resolve(__dirname, '../Source/non_ip/reject.conf'))) { - const [type, value] = line.split(','); - switch (type) { - case 'DOMAIN-KEYWORD': { - rejectOutput.addDomainKeyword(value); // Add for later deduplication - rejectExtraOutput.addDomainKeyword(value); // Add for later deduplication - break; - } - case 'DOMAIN-SUFFIX': { - filterRuleWhitelistDomainSets.add('.' + value); - break; - } - case 'DOMAIN': { - rejectOutput.addDomain(value); - break; - } - // no default - } - } - }) + // span.traceChildAsync('collect black keywords/suffixes', async () => + /** + * Collect DOMAIN, DOMAIN-SUFFIX, and DOMAIN-KEYWORD from non_ip/reject.conf for deduplication + * DOMAIN-WILDCARD is not really useful for deduplication, it is only included in AdGuardHome output + */ + rejectOutput.addFromRuleset(readFileByLine(path.resolve(__dirname, '../Source/non_ip/reject.conf'))) ].flat()); // eslint-disable-next-line sukka/no-single-return -- not single return return shouldStop; diff --git a/Build/lib/rules/domainset.ts b/Build/lib/rules/domainset.ts index c4acb338..f5dcb93b 100644 --- a/Build/lib/rules/domainset.ts +++ b/Build/lib/rules/domainset.ts @@ -114,6 +114,15 @@ export class DomainsetOutput extends RuleOutput { } } + for (const wildcard of this.domainWildcard) { + const processed = wildcard.replaceAll('?', '*'); + if (processed.startsWith('*.')) { + results.push(`||${processed.slice(2)}^`); + } else { + results.push(`|${processed}^`); + } + } + return results; } }