Surge_by_SukkaW/Dist/chunks/build-sgmodule-always-realip.CuBgClIT.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

136 lines
5.7 KiB
JavaScript

'use strict';const require$$0=require('node:path'),index=require('./index.B8Uk9n3v.cjs'),createFile=require('./create-file.loOMbJEN.cjs'),buildDomesticDirectLanRulesetDnsMappingModule=require('./build-domestic-direct-lan-ruleset-dns-mapping-module.T1tgVza_.cjs'),require$$8=require('yaml'),fetchRetry=require('./fetch-retry.D06uBUaW.cjs'),base=require('./base.C13YY5P3.cjs');var buildSgmoduleAlwaysRealip = {exports: {}};var hasRequiredBuildSgmoduleAlwaysRealip;
function requireBuildSgmoduleAlwaysRealip () {
if (hasRequiredBuildSgmoduleAlwaysRealip) return buildSgmoduleAlwaysRealip.exports;
hasRequiredBuildSgmoduleAlwaysRealip = 1;
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "buildAlwaysRealIPModule", {
enumerable: true,
get: function() {
return buildAlwaysRealIPModule;
}
});
const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0);
const _trace = /*@__PURE__*/ index.r();
const _createfile = /*@__PURE__*/ createFile.r();
const _direct = /*@__PURE__*/ buildDomesticDirectLanRulesetDnsMappingModule.a();
const _domestic = /*@__PURE__*/ buildDomesticDirectLanRulesetDnsMappingModule.b();
const _yaml = /*#__PURE__*/ _interop_require_wildcard(require$$8);
const _dir = /*@__PURE__*/ fetchRetry.a();
const _appendarrayinplace = /*@__PURE__*/ base.a();
const _description = /*@__PURE__*/ base.r();
const _builddomesticdirectlanrulesetdnsmappingmodule = buildDomesticDirectLanRulesetDnsMappingModule.r();
const _clash = /*@__PURE__*/ base.c();
const _base = /*@__PURE__*/ base.b();
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
const HOSTNAMES = [
// Network Detection, Captive Portal
'dns.msftncsi.com',
// '*.msftconnecttest.com',
// 'network-test.debian.org',
// 'detectportal.firefox.com',
// Handle SNAT conversation properly
'*.srv.nintendo.net',
'*.stun.playstation.net',
'xbox.*.microsoft.com',
'*.xboxlive.com',
'*.turn.twilio.com',
'*.stun.twilio.com',
'stun.syncthing.net',
'stun.*'
];
const buildAlwaysRealIPModule = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
const surge = [];
const clashFakeIpFilter = new _base.FileOutput(span, 'clash_fake_ip_filter').withTitle('Sukka\'s Ruleset - Always Real IP Plus').withDescription([
..._description.SHARED_DESCRIPTION,
'',
'Clash.Meta fake-ip-filter as ruleset'
]).withStrategies([
new _clash.ClashDomainSet('domainset')
]);
// Intranet, Router Setup, and mant more
const dataset = [
_direct.DIRECTS,
_direct.LAN,
_domestic.DOMESTICS,
_domestic.DOH_BOOTSTRAP
].reduce((acc, item)=>{
Object.values(item).forEach((i)=>{
if (i.realip) {
acc.push(i);
}
});
return acc;
}, []);
const getDnsMappingRuleWithoutWildcard = (0, _builddomesticdirectlanrulesetdnsmappingmodule.createGetDnsMappingRule)(false);
for (const { domains } of dataset){
clashFakeIpFilter.addFromRuleset(domains.flatMap(getDnsMappingRuleWithoutWildcard));
}
return Promise.all([
(0, _createfile.compareAndWriteFile)(span, [
'#!name=[Sukka] Always Real IP Plus',
`#!desc=Last Updated: ${new Date().toISOString()}`,
'',
'[General]',
`always-real-ip = %APPEND% ${HOSTNAMES.concat(surge).join(', ')}`
], _nodepath.default.resolve(_dir.OUTPUT_MODULES_DIR, 'sukka_common_always_realip.sgmodule')),
(0, _createfile.compareAndWriteFile)(span, _yaml.stringify({
dns: {
'fake-ip-filter': (0, _appendarrayinplace.appendArrayInPlace)(/** clash */ dataset.flatMap(({ domains })=>domains.map((domain)=>`+.${domain}`)), HOSTNAMES)
}
}, {
version: '1.1'
}).split('\n'), _nodepath.default.join(_dir.OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml'))
]);
});
} (buildSgmoduleAlwaysRealip, buildSgmoduleAlwaysRealip.exports));
return buildSgmoduleAlwaysRealip.exports;
}exports.r=requireBuildSgmoduleAlwaysRealip;