'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildRejectIpList=require('../_virtual/build-reject-ip-list.cjs'),require$$0=require('node:path'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),index=require('./trace/index.cjs'),description=require('./constants/description.cjs'),createFile=require('./lib/create-file.cjs'),dir=require('./constants/dir.cjs'),fetchRetry=require('./lib/fetch-retry.cjs'),fetchAssets=require('./lib/fetch-assets.cjs'),misc=require('./lib/misc.cjs'),badboy_asn=require('../Source/ip/badboy_asn.cjs'),ruleset=require('./lib/rules/ruleset.cjs');var hasRequiredBuildRejectIpList; function requireBuildRejectIpList () { if (hasRequiredBuildRejectIpList) return buildRejectIpList.__module.exports; hasRequiredBuildRejectIpList = 1; (function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "buildRejectIPList", { enumerable: true, get: function() { return buildRejectIPList; } }); const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0); const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require(); const _trace = /*@__PURE__*/ index.__require(); const _description = /*@__PURE__*/ description.__require(); const _createfile = /*@__PURE__*/ createFile.__require(); const _dir = /*@__PURE__*/ dir.__require(); const _fetchretry = /*@__PURE__*/ fetchRetry.__require(); const _fetchassets = /*@__PURE__*/ fetchAssets.__require(); const _misc = /*@__PURE__*/ misc.__require(); const _badboy_asn = /*@__PURE__*/ badboy_asn.__require(); const _ruleset = /*@__PURE__*/ ruleset.__require(); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const BOGUS_NXDOMAIN_URL = 'https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf'; const getBogusNxDomainIPsPromise = (0, _fetchretry.$$fetch)(BOGUS_NXDOMAIN_URL).then(async (resp)=>{ const ipv4 = []; const ipv6 = []; for await (const line of (0, _fetchtextbyline.createReadlineInterfaceFromResponse)(resp, true)){ if (line.startsWith('bogus-nxdomain=')) { const ip = line.slice(15).trim(); const v = (0, _misc.fastIpVersion)(ip); if (v === 4) { ipv4.push(ip); } else if (v === 6) { ipv6.push(ip); } } } return [ ipv4, ipv6 ]; }); const BOTNET_FILTER_URL = 'https://malware-filter.pages.dev/botnet-filter-dnscrypt-blocked-ips.txt'; const BOTNET_FILTER_MIRROR_URL = [ 'https://botnet-filter.pages.dev/botnet-filter-dnscrypt-blocked-ips.txt', 'https://malware-filter.gitlab.io/malware-filter/botnet-filter-dnscrypt-blocked-ips.txt', 'https://malware-filter.gitlab.io/botnet-filter/botnet-filter-dnscrypt-blocked-ips.txt' ]; const getBotNetFilterIPsPromise = (0, _fetchassets.fetchAssets)(BOTNET_FILTER_URL, BOTNET_FILTER_MIRROR_URL, true).then((arr)=>arr.reduce((acc, ip)=>{ const v = (0, _misc.fastIpVersion)(ip); if (v === 4) { acc[0].push(ip); } else if (v === 6) { acc[1].push(ip); } return acc; }, [ [], [] ])); const readLocalRejectIpListPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.resolve(_dir.SOURCE_DIR, 'ip/reject.conf')); const buildRejectIPList = (0, _trace.task)(require.main === module, __filename)(async (span)=>{ const [bogusNxDomainIPs, botNetIPs] = await Promise.all([ span.traceChildPromise('get bogus nxdomain ips', getBogusNxDomainIPsPromise), span.traceChildPromise('get botnet ips', getBotNetFilterIPsPromise) ]); return Promise.all([ new _ruleset.RulesetOutput(span, 'reject', 'ip').withTitle('Sukka\'s Ruleset - Anti Bogus Domain').withDescription([ ..._description.SHARED_DESCRIPTION, '', 'This file contains known addresses that are hijacking NXDOMAIN results returned by DNS servers, and botnet controller IPs.', '', 'Data from:', ' - https://github.com/felixonmars/dnsmasq-china-list', ' - https://github.com/curbengh/botnet-filter' ]).addFromRuleset(readLocalRejectIpListPromise).bulkAddCIDR4NoResolve(bogusNxDomainIPs[0]).bulkAddCIDR6NoResolve(bogusNxDomainIPs[1]).bulkAddCIDR4NoResolve(botNetIPs[0]).bulkAddCIDR6NoResolve(botNetIPs[1]).bulkAddIPASN(_badboy_asn.AUGUST_ASN).bulkAddIPASN(_badboy_asn.HUIZE_ASN).write(), (0, _createfile.compareAndWriteFile)(span, [ _badboy_asn.AUGUST_ASN.join(' ') ], _nodepath.default.join(_dir.OUTPUT_INTERNAL_DIR, 'august_asn.txt')), (0, _createfile.compareAndWriteFile)(span, [ _badboy_asn.HUIZE_ASN.join(' ') ], _nodepath.default.join(_dir.OUTPUT_INTERNAL_DIR, 'huize_asn.txt')) ]); }); } (buildRejectIpList.__module, buildRejectIpList.__module.exports)); return buildRejectIpList.__module.exports; }exports.__require=requireBuildRejectIpList;