mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 05:40:29 +08:00
217 lines
11 KiB
JavaScript
217 lines
11 KiB
JavaScript
'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const buildSspanelAppprofile=require('../_virtual/build-sspanel-appprofile.cjs'),buildAppleCdn=require('./build-apple-cdn2.cjs'),buildDomesticDirectLanRulesetDnsMappingModule=require('./build-domestic-direct-lan-ruleset-dns-mapping-module2.cjs'),fetchTextByLine=require('./lib/fetch-text-by-line.cjs'),index=require('./trace/index.cjs'),require$$0=require('node:path'),stream=require('../Source/stream.cjs'),buildChnCidr=require('./build-chn-cidr2.cjs'),buildTelegramCidr=require('./build-telegram-cidr2.cjs'),createFile=require('./lib/create-file.cjs'),buildMicrosoftCdn=require('./build-microsoft-cdn2.cjs'),require$$6=require('foxts/guard'),appendArrayInPlace=require('./lib/append-array-in-place.cjs'),dir=require('./constants/dir.cjs'),ruleset=require('./lib/rules/ruleset.cjs');var hasRequiredBuildSspanelAppprofile;
|
|
|
|
function requireBuildSspanelAppprofile () {
|
|
if (hasRequiredBuildSspanelAppprofile) return buildSspanelAppprofile.__module.exports;
|
|
hasRequiredBuildSspanelAppprofile = 1;
|
|
(function (module, exports) {
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "buildSSPanelUIMAppProfile", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return buildSSPanelUIMAppProfile;
|
|
}
|
|
});
|
|
const _buildapplecdn = buildAppleCdn.__require();
|
|
const _builddomesticdirectlanrulesetdnsmappingmodule = buildDomesticDirectLanRulesetDnsMappingModule.__require();
|
|
const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.__require();
|
|
const _trace = /*@__PURE__*/ index.__require();
|
|
const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0);
|
|
const _stream = /*@__PURE__*/ stream.__require();
|
|
const _buildchncidr = buildChnCidr.__require();
|
|
const _buildtelegramcidr = buildTelegramCidr.__require();
|
|
const _createfile = /*@__PURE__*/ createFile.__require();
|
|
const _buildmicrosoftcdn = buildMicrosoftCdn.__require();
|
|
const _guard = require$$6;
|
|
const _appendarrayinplace = /*@__PURE__*/ appendArrayInPlace.__require();
|
|
const _dir = /*@__PURE__*/ dir.__require();
|
|
const _ruleset = /*@__PURE__*/ ruleset.__require();
|
|
function _interop_require_default(obj) {
|
|
return obj && obj.__esModule ? obj : {
|
|
default: obj
|
|
};
|
|
}
|
|
const POLICY_GROUPS = [
|
|
[
|
|
'Default Proxy',
|
|
true,
|
|
false
|
|
],
|
|
[
|
|
'Global',
|
|
true,
|
|
true
|
|
],
|
|
[
|
|
'Microsoft & Apple',
|
|
true,
|
|
true
|
|
],
|
|
[
|
|
'Stream',
|
|
true,
|
|
false
|
|
],
|
|
[
|
|
'Steam Download',
|
|
true,
|
|
true
|
|
],
|
|
[
|
|
'Domestic',
|
|
false,
|
|
true
|
|
],
|
|
[
|
|
'Final Match',
|
|
true,
|
|
true
|
|
]
|
|
];
|
|
const steamDomainsPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/game-download.conf'));
|
|
const buildSSPanelUIMAppProfile = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
|
|
const [[domesticRules, directRules, lanRules], appleCdnDomains, [microsoftCdnDomains, microsoftCdnDomainSuffixes], appleCnRules, neteaseMusicRules, microsoftRules, appleRules, streamRules, steamDomainset, globalRules, telegramRules, [domesticCidrs4, domesticCidrs6], [streamCidrs4, streamCidrs6], { ipcidr: telegramCidrs4, ipcidr6: telegramCidrs6 }, rawLanCidrs] = await Promise.all([
|
|
// domestic - domains
|
|
(0, _builddomesticdirectlanrulesetdnsmappingmodule.getDomesticAndDirectDomainsRulesetPromise)(),
|
|
(0, _buildapplecdn.getAppleCdnDomainsPromise)(),
|
|
(0, _buildmicrosoftcdn.getMicrosoftCdnRulesetPromise)(),
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'non_ip/apple_cn.conf')),
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'non_ip/neteasemusic.conf')),
|
|
// microsoft & apple - domains
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'non_ip/microsoft.conf')),
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'non_ip/apple_services.conf')),
|
|
// stream - domains
|
|
_stream.ALL.flatMap((i)=>i.rules),
|
|
// steam - domains
|
|
steamDomainsPromise,
|
|
// global - domains
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'non_ip/global.conf')),
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'non_ip/telegram.conf')),
|
|
// domestic - ip cidr
|
|
(0, _buildchncidr.getChnCidrPromise)(),
|
|
_stream.ALL.reduce((acc, i)=>{
|
|
if (i.ip) {
|
|
(0, _appendarrayinplace.appendArrayInPlace)(acc[0], i.ip.v4);
|
|
(0, _appendarrayinplace.appendArrayInPlace)(acc[1], i.ip.v6);
|
|
}
|
|
return acc;
|
|
}, [
|
|
[],
|
|
[]
|
|
]),
|
|
// global - ip cidr
|
|
(0, _buildtelegramcidr.getTelegramCIDRPromise)(),
|
|
// lan - ip cidr
|
|
(0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.OUTPUT_SURGE_DIR, 'ip/lan.conf'))
|
|
]);
|
|
const domestic = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'non_ip').addFromRuleset(domesticRules).bulkAddDomainSuffix(appleCdnDomains).bulkAddDomain(microsoftCdnDomains).bulkAddDomainSuffix(microsoftCdnDomainSuffixes).addFromRuleset(appleCnRules).addFromRuleset(neteaseMusicRules);
|
|
const microsoftApple = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'non_ip').addFromRuleset(microsoftRules).addFromRuleset(appleRules);
|
|
const stream = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'non_ip').addFromRuleset(streamRules);
|
|
const steam = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'non_ip').addFromDomainset(steamDomainset);
|
|
const global = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'non_ip').addFromRuleset(globalRules).addFromRuleset(telegramRules);
|
|
const direct = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'non_ip').addFromRuleset(directRules).addFromRuleset(lanRules);
|
|
const domesticCidr = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'ip').bulkAddCIDR4(domesticCidrs4).bulkAddCIDR6(domesticCidrs6);
|
|
const streamCidr = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'ip').bulkAddCIDR4(streamCidrs4).bulkAddCIDR6(streamCidrs6);
|
|
const telegramCidr = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'ip').bulkAddCIDR4(telegramCidrs4).bulkAddCIDR6(telegramCidrs6);
|
|
const lanCidrs = new _ruleset.ClashOnlyRulesetOutput(span, '_', 'ip').addFromRuleset(rawLanCidrs);
|
|
const output = generateAppProfile(...(await Promise.all([
|
|
domestic.compile(),
|
|
microsoftApple.compile(),
|
|
stream.compile(),
|
|
steam.compile(),
|
|
global.compile(),
|
|
direct.compile(),
|
|
domesticCidr.compile(),
|
|
streamCidr.compile(),
|
|
telegramCidr.compile(),
|
|
lanCidrs.compile()
|
|
])).map((output)=>(0, _guard.nullthrow)(output[0])));
|
|
await (0, _createfile.compareAndWriteFile)(span, output, _nodepath.default.resolve(_dir.OUTPUT_INTERNAL_DIR, 'appprofile.php'));
|
|
});
|
|
function generateAppProfile(directDomains, microsoftAppleDomains, streamDomains, steamDomains, globalDomains, lanDomains, directCidrs, streamCidrs, globalCidrs, lanCidrs) {
|
|
const redults = [
|
|
'<?php',
|
|
'',
|
|
`// # Build ${new Date().toISOString()}`,
|
|
'',
|
|
'declare(strict_types=1);',
|
|
'',
|
|
'$_ENV[\'Clash_Config\'] = [',
|
|
' \'port\' => 7890,',
|
|
' \'socks-port\' => 7891,',
|
|
' \'allow-lan\' => false,',
|
|
' \'mode\' => \'Rule\',',
|
|
' \'ipv6\' => true,',
|
|
' \'log-level\' => \'error\',',
|
|
' \'external-controller\' => \'0.0.0.0:9090\',',
|
|
' \'tun\' => [',
|
|
' \'enable\' => true,',
|
|
' \'stack\' => \'system\',',
|
|
' \'auto-route\' => true,',
|
|
' \'auto-redir\' => true,',
|
|
' \'auto-detect-interface\' => true,',
|
|
' \'dns-hijack\' => [',
|
|
' \'8.8.8.8:53\',',
|
|
' \'any:53\',',
|
|
' \'tcp://8.8.8.8:53\',',
|
|
' \'tcp://any:53\',',
|
|
' ]',
|
|
' ]',
|
|
'];',
|
|
'',
|
|
`$_ENV['Clash_Group_Indexes'] = [${JSON.stringify(POLICY_GROUPS.reduce((acc, [, insertProxy], index)=>{
|
|
if (insertProxy) {
|
|
acc.push(index);
|
|
}
|
|
return acc;
|
|
}, [])).slice(1, -1)}];`,
|
|
'$_ENV[\'Clash_Group_Config\'] = [',
|
|
' \'proxy-groups\' => ['
|
|
];
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, POLICY_GROUPS.flatMap(([name, insertProxy, insertDirect])=>[
|
|
' [',
|
|
` 'name' => '${name}',`,
|
|
' \'type\' => \'select\',',
|
|
' \'proxies\' => [',
|
|
insertProxy && name !== 'Default Proxy' && ' \'Default Proxy\',',
|
|
insertDirect && ' \'DIRECT\',',
|
|
' ],',
|
|
' ],'
|
|
].filter(_guard.isTruthy)));
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, [
|
|
' ],',
|
|
' \'rules\' => ['
|
|
]);
|
|
// domestic - domains
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, directDomains.map((line)=>` '${line},Domestic',`));
|
|
// microsoft & apple - domains
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, microsoftAppleDomains.map((line)=>` '${line},Microsoft & Apple',`));
|
|
// stream - domains
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, streamDomains.map((line)=>` '${line},Stream',`));
|
|
// steam download - domains
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, steamDomains.map((line)=>` '${line},Steam Download',`));
|
|
// global - domains
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, globalDomains.map((line)=>` '${line},Global',`));
|
|
// microsoft & apple - ip cidr (nope)
|
|
// lan - domains
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, lanDomains.map((line)=>` '${line},DIRECT',`));
|
|
// stream - ip cidr
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, streamCidrs.map((line)=>` '${line},Stream',`));
|
|
// global - ip cidr
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, globalCidrs.map((line)=>` '${line},Global',`));
|
|
// domestic - ip cidr
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, directCidrs.map((line)=>` '${line},Domestic',`));
|
|
// lan - ip cidr
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, lanCidrs.map((line)=>` '${line},DIRECT',`));
|
|
// match
|
|
(0, _appendarrayinplace.appendArrayInPlace)(redults, [
|
|
' \'MATCH,Final Match\',',
|
|
' ],',
|
|
'];'
|
|
]);
|
|
return redults;
|
|
}
|
|
} (buildSspanelAppprofile.__module, buildSspanelAppprofile.__module.exports));
|
|
return buildSspanelAppprofile.__module.exports;
|
|
}exports.__require=requireBuildSspanelAppprofile; |