Surge_by_SukkaW/Dist/Build/build-reject-ip-list2.cjs
SukkaW d354c5e988
Some checks are pending
Build / Build (push) Waiting to run
Build / Diff output (push) Blocked by required conditions
Build / Deploy to Cloudflare Pages (push) Blocked by required conditions
Build / Deploy to GitHub and GitLab (push) Blocked by required conditions
Chore: maintainance
2025-02-07 17:52:36 +08:00

96 lines
5.2 KiB
JavaScript

'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;