瀏覽代碼

Feat: include `my_reject` in adguardhome

SukkaW 1 年之前
父節點
當前提交
4e9e206ec0
共有 3 個文件被更改,包括 21 次插入18 次删除
  1. 12 3
      Build/build-reject-domainset.ts
  2. 9 3
      Build/lib/rules/base.ts
  3. 0 12
      Source/non_ip/my_reject.conf

+ 12 - 3
Build/build-reject-domainset.ts

@@ -6,7 +6,7 @@ import { processHosts, processFilterRules, processDomainLists } from './lib/pars
 
 import { HOSTS, ADGUARD_FILTERS, PREDEFINED_WHITELIST, DOMAIN_LISTS, HOSTS_EXTRA, DOMAIN_LISTS_EXTRA, ADGUARD_FILTERS_EXTRA, PHISHING_DOMAIN_LISTS_EXTRA, ADGUARD_FILTERS_WHITELIST } from './constants/reject-data-source';
 import { compareAndWriteFile } from './lib/create-file';
-import { readFileByLine, readFileIntoProcessedArray } from './lib/fetch-text-by-line';
+import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
 import { task } from './trace';
 // tldts-experimental is way faster than tldts, but very little bit inaccurate
 // (since it is hashes based). But the result is still deterministic, which is
@@ -21,7 +21,8 @@ import { DomainsetOutput } from './lib/create-file';
 
 const readLocalRejectDomainsetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject_sukka.conf'));
 const readLocalRejectExtraDomainsetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject_sukka_extra.conf'));
-const readLocalRejectRulesetPromise = readFileByLine(path.join(SOURCE_DIR, 'non_ip/reject.conf'));
+const readLocalRejectRulesetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/reject.conf'));
+const readLocalMyRejectRulesetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/my_reject.conf'));
 
 export const buildRejectDomainSet = task(require.main === module, __filename)(async (span) => {
   const rejectBaseDescription = [
@@ -171,7 +172,15 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as
           '! Description: The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining',
           '!'
         ],
-        rejectOutput.adguardhome()
+        appendArrayInPlace(
+          rejectOutput.adguardhome(),
+          (
+            await new DomainsetOutput(span, 'my_reject')
+              .addFromRuleset(readLocalMyRejectRulesetPromise)
+              .addFromRuleset(readLocalRejectRulesetPromise)
+              .done()
+          ).adguardhome()
+        )
       ),
       path.join(OUTPUT_INTERNAL_DIR, 'reject-adguardhome.txt')
     )

+ 9 - 3
Build/lib/rules/base.ts

@@ -36,7 +36,7 @@ export abstract class RuleOutput<TPreprocessed = unknown> {
   protected otherRules: string[] = [];
   protected abstract type: 'domainset' | 'non_ip' | 'ip';
 
-  private pendingPromise: Promise<void> | null = null;
+  private pendingPromise: Promise<any> | null = null;
 
   static readonly jsonToLines = (json: unknown): string[] => stringify(json).split('\n');
 
@@ -201,8 +201,13 @@ export abstract class RuleOutput<TPreprocessed = unknown> {
     }
   }
 
-  addFromRuleset(source: AsyncIterable<string> | Iterable<string>) {
-    this.pendingPromise = (this.pendingPromise ||= Promise.resolve()).then(() => this.addFromRulesetPromise(source));
+  addFromRuleset(source: AsyncIterable<string> | Iterable<string> | Promise<Iterable<string>>) {
+    if (this.pendingPromise) {
+      this.pendingPromise = this.pendingPromise.then(() => source);
+    } else {
+      this.pendingPromise = Promise.resolve(source);
+    }
+    this.pendingPromise = this.pendingPromise.then((source) => this.addFromRulesetPromise(source));
     return this;
   }
 
@@ -247,6 +252,7 @@ export abstract class RuleOutput<TPreprocessed = unknown> {
   async done() {
     await this.pendingPromise;
     this.pendingPromise = null;
+    return this;
   }
 
   private guardPendingPromise() {

+ 0 - 12
Source/non_ip/my_reject.conf

@@ -38,18 +38,6 @@ DOMAIN-SUFFIX,uhabo.com
 DOMAIN-SUFFIX,xycdn.com
 
 # >> Misc
-DOMAIN-SUFFIX,parallels.com
-DOMAIN-SUFFIX,www.parallelskorea.com
-DOMAIN-SUFFIX,parallels.cn
-DOMAIN-SUFFIX,parallels.de
-DOMAIN-SUFFIX,parallels.es
-DOMAIN-SUFFIX,parallels.fr
-DOMAIN-SUFFIX,parallels.nl
-DOMAIN-SUFFIX,parallels.pt
-DOMAIN-SUFFIX,parallels.ru
-DOMAIN-SUFFIX,parallelskorea.com
-DOMAIN-SUFFIX,myparallels.com
-DOMAIN-SUFFIX,my.parallels.com
 
 DOMAIN-KEYWORD,bahoom
 DOMAIN,daisydiskapp.com