mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 05:40:29 +08:00
77 lines
3.9 KiB
JavaScript
77 lines
3.9 KiB
JavaScript
'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildChnCidr=require('../_virtual/build-chn-cidr.cjs'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),index=require('./trace/index.cjs'),require$$2=require('fast-cidr-tools'),memoPromise=require('./lib/memo-promise.cjs'),cidr=require('./constants/cidr.cjs'),appendArrayInPlace=require('./lib/append-array-in-place.cjs'),ip=require('./lib/rules/ip.cjs'),fsMemo=require('./lib/fs-memo.cjs'),description=require('./constants/description.cjs');var hasRequiredBuildChnCidr;
|
|
|
|
function requireBuildChnCidr () {
|
|
if (hasRequiredBuildChnCidr) return buildChnCidr.__module.exports;
|
|
hasRequiredBuildChnCidr = 1;
|
|
(function (module, exports) {
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
function _export(target, all) {
|
|
for(var name in all)Object.defineProperty(target, name, {
|
|
enumerable: true,
|
|
get: all[name]
|
|
});
|
|
}
|
|
_export(exports, {
|
|
buildChnCidr: function() {
|
|
return buildChnCidr;
|
|
},
|
|
getChnCidrPromise: function() {
|
|
return getChnCidrPromise;
|
|
}
|
|
});
|
|
const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require();
|
|
const _trace = /*@__PURE__*/ index.__require();
|
|
const _fastcidrtools = require$$2;
|
|
const _memopromise = /*@__PURE__*/ memoPromise.__require();
|
|
const _cidr = /*@__PURE__*/ cidr.__require();
|
|
const _appendarrayinplace = /*@__PURE__*/ appendArrayInPlace.__require();
|
|
const _ip = /*@__PURE__*/ ip.__require();
|
|
const _fsmemo = /*@__PURE__*/ fsMemo.__require();
|
|
const _description = /*@__PURE__*/ description.__require();
|
|
const PROBE_CHN_CIDR_V4 = [
|
|
// NetEase Hangzhou
|
|
'223.252.196.38',
|
|
// Aliyun ShenZhen
|
|
'120.78.92.171'
|
|
];
|
|
const getChnCidrPromise = (0, _memopromise.createMemoizedPromise)((0, _fsmemo.cachedOnlyFail)(async function getChnCidr() {
|
|
const [_cidr4, cidr6] = await Promise.all([
|
|
(0, _fetchtextbyline.fetchRemoteTextByLine)('https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt', true).then(Array.fromAsync),
|
|
(0, _fetchtextbyline.fetchRemoteTextByLine)('https://gaoyifan.github.io/china-operator-ip/china6.txt', true).then(Array.fromAsync)
|
|
]);
|
|
const cidr4 = (0, _fastcidrtools.exclude)((0, _appendarrayinplace.appendArrayInPlace)(_cidr4, _cidr.CN_CIDR_MISSING_IN_CHNROUTE), _cidr.NON_CN_CIDR_INCLUDED_IN_CHNROUTE, true);
|
|
for (const probeIp of PROBE_CHN_CIDR_V4){
|
|
if (!(0, _fastcidrtools.contains)(cidr4, PROBE_CHN_CIDR_V4)) {
|
|
const err = new TypeError('chnroutes missing probe IP');
|
|
err.cause = probeIp;
|
|
throw err;
|
|
}
|
|
}
|
|
return [
|
|
cidr4,
|
|
cidr6
|
|
];
|
|
}, {
|
|
serializer: JSON.stringify,
|
|
deserializer: JSON.parse
|
|
}));
|
|
const buildChnCidr = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
|
|
const [filteredCidr4, cidr6] = await span.traceChildAsync('download chnroutes2', getChnCidrPromise);
|
|
// Can not use SHARED_DESCRIPTION here as different license
|
|
const description = (0, _description.createFileDescription)('CC BY-SA 2.0');
|
|
return Promise.all([
|
|
new _ip.IPListOutput(span, 'china_ip', false).withTitle('Sukka\'s Ruleset - Mainland China IPv4 CIDR').withDescription([
|
|
...description,
|
|
'Data from https://misaka.io (misakaio @ GitHub)'
|
|
]).bulkAddCIDR4(filteredCidr4).write(),
|
|
new _ip.IPListOutput(span, 'china_ip_ipv6', false).withTitle('Sukka\'s Ruleset - Mainland China IPv6 CIDR').withDescription([
|
|
...description,
|
|
'Data from https://github.com/gaoyifan/china-operator-ip'
|
|
]).bulkAddCIDR6(cidr6).write()
|
|
]);
|
|
});
|
|
} (buildChnCidr.__module, buildChnCidr.__module.exports));
|
|
return buildChnCidr.__module.exports;
|
|
}exports.__require=requireBuildChnCidr; |