'use strict';const buildAppleCdn=require('./build-apple-cdn.CNsnkTO_.cjs'),buildDomesticDirectLanRulesetDnsMappingModule=require('./build-domestic-direct-lan-ruleset-dns-mapping-module.T1tgVza_.cjs'),fetchTextByLine=require('./fetch-text-by-line.YY5b5610.cjs'),index=require('./index.B8Uk9n3v.cjs'),require$$0=require('node:path'),stream=require('./stream.C9eZuk9f.cjs'),buildChnCidr=require('./build-chn-cidr.BjyqKcvm.cjs'),buildTelegramCidr=require('./build-telegram-cidr.05NmRbUx.cjs'),createFile=require('./create-file.loOMbJEN.cjs'),buildMicrosoftCdn=require('./build-microsoft-cdn.CCw86frc.cjs'),require$$6=require('foxts/guard'),base=require('./base.C13YY5P3.cjs'),fetchRetry=require('./fetch-retry.D06uBUaW.cjs'),ruleset=require('./ruleset.iYH0XOC1.cjs');var buildSspanelAppprofile = {exports: {}};var hasRequiredBuildSspanelAppprofile; function requireBuildSspanelAppprofile () { if (hasRequiredBuildSspanelAppprofile) return buildSspanelAppprofile.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.r(); const _builddomesticdirectlanrulesetdnsmappingmodule = buildDomesticDirectLanRulesetDnsMappingModule.r(); const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.a(); const _trace = /*@__PURE__*/ index.r(); const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0); const _stream = /*@__PURE__*/ stream.r(); const _buildchncidr = buildChnCidr.r(); const _buildtelegramcidr = buildTelegramCidr.r(); const _createfile = /*@__PURE__*/ createFile.r(); const _buildmicrosoftcdn = buildMicrosoftCdn.r(); const _guard = require$$6; const _appendarrayinplace = /*@__PURE__*/ base.a(); const _dir = /*@__PURE__*/ fetchRetry.a(); const _ruleset = /*@__PURE__*/ ruleset.r(); 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 = [ ' 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, buildSspanelAppprofile.exports)); return buildSspanelAppprofile.exports; }exports.r=requireBuildSspanelAppprofile;