mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 05:40:29 +08:00
96 lines
5.2 KiB
JavaScript
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; |