mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 13:50:29 +08:00
136 lines
5.7 KiB
JavaScript
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; |