mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 05:40:29 +08:00
141 lines
11 KiB
JavaScript
141 lines
11 KiB
JavaScript
'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildRejectDomainset=require('../_virtual/build-reject-domainset.cjs'),require$$0=require('node:path'),require$$1=require('node:process'),hosts=require('./lib/parse-filter/hosts.cjs'),domainlists=require('./lib/parse-filter/domainlists.cjs'),filters=require('./lib/parse-filter/filters.cjs'),rejectDataSource=require('./constants/reject-data-source.cjs'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),index=require('./trace/index.cjs'),description=require('./constants/description.cjs'),getPhishingDomains=require('./lib/get-phishing-domains.cjs'),require$$10=require('foxts/add-array-elements-to-set'),dir=require('./constants/dir.cjs'),domainset=require('./lib/rules/domainset.cjs'),shared=require('./lib/parse-filter/shared.cjs');var hasRequiredBuildRejectDomainset;
|
|
|
|
function requireBuildRejectDomainset () {
|
|
if (hasRequiredBuildRejectDomainset) return buildRejectDomainset.__module.exports;
|
|
hasRequiredBuildRejectDomainset = 1;
|
|
(function (module, exports) {
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "buildRejectDomainSet", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return buildRejectDomainSet;
|
|
}
|
|
});
|
|
const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0);
|
|
const _nodeprocess = /*#__PURE__*/ _interop_require_default(require$$1);
|
|
const _hosts = /*@__PURE__*/ hosts.__require();
|
|
const _domainlists = /*@__PURE__*/ domainlists.__require();
|
|
const _filters = /*@__PURE__*/ filters.__require();
|
|
const _rejectdatasource = /*@__PURE__*/ rejectDataSource.__require();
|
|
const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require();
|
|
const _trace = /*@__PURE__*/ index.__require();
|
|
const _description = /*@__PURE__*/ description.__require();
|
|
const _getphishingdomains = /*@__PURE__*/ getPhishingDomains.__require();
|
|
const _addarrayelementstoset = require$$10;
|
|
const _dir = /*@__PURE__*/ dir.__require();
|
|
const _domainset = /*@__PURE__*/ domainset.__require();
|
|
const _shared = /*@__PURE__*/ shared.__require();
|
|
function _interop_require_default(obj) {
|
|
return obj && obj.__esModule ? obj : {
|
|
default: obj
|
|
};
|
|
}
|
|
const readLocalRejectDomainsetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/reject_sukka.conf'));
|
|
const readLocalRejectExtraDomainsetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/reject_sukka_extra.conf'));
|
|
const readLocalRejectRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/reject.conf'));
|
|
const readLocalRejectDropRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/reject-drop.conf'));
|
|
const readLocalRejectNoDropRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/reject-no-drop.conf'));
|
|
const readLocalMyRejectRulesetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'non_ip/my_reject.conf'));
|
|
const hostsDownloads = _rejectdatasource.HOSTS.map((entry)=>(0, _hosts.processHostsWithPreload)(...entry));
|
|
const hostsExtraDownloads = _rejectdatasource.HOSTS_EXTRA.map((entry)=>(0, _hosts.processHostsWithPreload)(...entry));
|
|
const domainListsDownloads = _rejectdatasource.DOMAIN_LISTS.map((entry)=>(0, _domainlists.processDomainListsWithPreload)(...entry));
|
|
const domainListsExtraDownloads = _rejectdatasource.DOMAIN_LISTS_EXTRA.map((entry)=>(0, _domainlists.processDomainListsWithPreload)(...entry));
|
|
const adguardFiltersDownloads = _rejectdatasource.ADGUARD_FILTERS.map((entry)=>(0, _filters.processFilterRulesWithPreload)(...entry));
|
|
const adguardFiltersExtraDownloads = _rejectdatasource.ADGUARD_FILTERS_EXTRA.map((entry)=>(0, _filters.processFilterRulesWithPreload)(...entry));
|
|
const adguardFiltersWhitelistsDownloads = _rejectdatasource.ADGUARD_FILTERS_WHITELIST.map((entry)=>(0, _filters.processFilterRulesWithPreload)(...entry));
|
|
const buildRejectDomainSet = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
|
|
const rejectBaseDescription = [
|
|
..._description.SHARED_DESCRIPTION,
|
|
'',
|
|
'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining',
|
|
'',
|
|
'Build from:',
|
|
..._rejectdatasource.HOSTS.map((host)=>` - ${host[0]}`),
|
|
..._rejectdatasource.DOMAIN_LISTS.map((domainList)=>` - ${domainList[0]}`),
|
|
..._rejectdatasource.ADGUARD_FILTERS.map((filter)=>` - ${Array.isArray(filter) ? filter[0] : filter}`)
|
|
];
|
|
const rejectOutput = new _domainset.DomainsetOutput(span, 'reject').withTitle('Sukka\'s Ruleset - Reject Base').withDescription(rejectBaseDescription);
|
|
const rejectExtraOutput = new _domainset.DomainsetOutput(span, 'reject_extra').withTitle('Sukka\'s Ruleset - Reject Extra').withDescription([
|
|
..._description.SHARED_DESCRIPTION,
|
|
'',
|
|
'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining',
|
|
'',
|
|
'Build from:',
|
|
..._rejectdatasource.HOSTS_EXTRA.map((host)=>` - ${host[0]}`),
|
|
..._rejectdatasource.DOMAIN_LISTS_EXTRA.map((domainList)=>` - ${domainList[0]}`),
|
|
..._rejectdatasource.ADGUARD_FILTERS_EXTRA.map((filter)=>` - ${Array.isArray(filter) ? filter[0] : filter}`),
|
|
..._rejectdatasource.PHISHING_DOMAIN_LISTS_EXTRA.map((domainList)=>` - ${domainList[0]}`)
|
|
]);
|
|
const appendArrayToRejectOutput = rejectOutput.addFromDomainset.bind(rejectOutput);
|
|
const appendArrayToRejectExtraOutput = rejectExtraOutput.addFromDomainset.bind(rejectExtraOutput);
|
|
/** Whitelists */ const filterRuleWhitelistDomainSets = new Set(_rejectdatasource.PREDEFINED_WHITELIST);
|
|
// Parse from AdGuard Filters
|
|
await span.traceChild('download and process hosts / adblock filter rules').traceAsyncFn((childSpan)=>Promise.all([
|
|
// Parse from remote hosts & domain lists
|
|
hostsDownloads.map((task)=>task(childSpan).then(appendArrayToRejectOutput)),
|
|
hostsExtraDownloads.map((task)=>task(childSpan).then(appendArrayToRejectExtraOutput)),
|
|
domainListsDownloads.map((task)=>task(childSpan).then(appendArrayToRejectOutput)),
|
|
domainListsExtraDownloads.map((task)=>task(childSpan).then(appendArrayToRejectExtraOutput)),
|
|
adguardFiltersDownloads.map((task)=>task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes })=>{
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomains);
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomainSuffixes, (suffix)=>'.' + suffix);
|
|
rejectOutput.bulkAddDomain(blackDomains);
|
|
rejectOutput.bulkAddDomainSuffix(blackDomainSuffixes);
|
|
})),
|
|
adguardFiltersExtraDownloads.map((task)=>task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes })=>{
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomains);
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomainSuffixes, (suffix)=>'.' + suffix);
|
|
rejectExtraOutput.bulkAddDomain(blackDomains);
|
|
rejectExtraOutput.bulkAddDomainSuffix(blackDomainSuffixes);
|
|
})),
|
|
adguardFiltersWhitelistsDownloads.map((task)=>task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes })=>{
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomains);
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, whiteDomainSuffixes, (suffix)=>'.' + suffix);
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, blackDomains);
|
|
(0, _addarrayelementstoset.addArrayElementsToSet)(filterRuleWhitelistDomainSets, blackDomainSuffixes, (suffix)=>'.' + suffix);
|
|
})),
|
|
(0, _getphishingdomains.getPhishingDomains)(childSpan).then(appendArrayToRejectExtraOutput),
|
|
readLocalRejectDomainsetPromise.then(appendArrayToRejectOutput),
|
|
readLocalRejectDomainsetPromise.then(appendArrayToRejectExtraOutput),
|
|
readLocalRejectExtraDomainsetPromise.then(appendArrayToRejectExtraOutput),
|
|
// Dedupe domainSets
|
|
// 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(readLocalRejectRulesetPromise),
|
|
rejectExtraOutput.addFromRuleset(readLocalRejectRulesetPromise)
|
|
].flat()));
|
|
if (_shared.foundDebugDomain.value) {
|
|
// eslint-disable-next-line sukka/unicorn/no-process-exit -- cli App
|
|
_nodeprocess.default.exit(1);
|
|
}
|
|
await Promise.all([
|
|
rejectOutput.done(),
|
|
rejectExtraOutput.done()
|
|
]);
|
|
// whitelist
|
|
span.traceChildSync('whitelist', ()=>{
|
|
for (const domain of filterRuleWhitelistDomainSets){
|
|
rejectOutput.whitelistDomain(domain);
|
|
rejectExtraOutput.whitelistDomain(domain);
|
|
}
|
|
rejectOutput.domainTrie.dump(rejectExtraOutput.whitelistDomain.bind(rejectExtraOutput));
|
|
});
|
|
await Promise.all([
|
|
rejectOutput.write(),
|
|
rejectExtraOutput.write()
|
|
]);
|
|
// we are going to re-use rejectOutput's domainTrie and mutate it
|
|
// so we must wait until we write rejectOutput to disk after we can mutate its trie
|
|
const rejectOutputAdGuardHome = new _domainset.AdGuardHomeOutput(span, 'reject-adguardhome', _dir.OUTPUT_INTERNAL_DIR).withTitle('Sukka\'s Ruleset - Blocklist for AdGuardHome').withDescription([
|
|
'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining'
|
|
]);
|
|
rejectOutputAdGuardHome.domainTrie = rejectOutput.domainTrie;
|
|
await rejectOutputAdGuardHome.addFromRuleset(readLocalMyRejectRulesetPromise).addFromRuleset(readLocalRejectRulesetPromise).addFromRuleset(readLocalRejectDropRulesetPromise).addFromRuleset(readLocalRejectNoDropRulesetPromise).write();
|
|
});
|
|
} (buildRejectDomainset.__module, buildRejectDomainset.__module.exports));
|
|
return buildRejectDomainset.__module.exports;
|
|
}exports.__require=requireBuildRejectDomainset; |