Surge_by_SukkaW/Dist/Build/build-sspanel-appprofile2.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

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;