mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 13:50:29 +08:00
86 lines
4.6 KiB
JavaScript
86 lines
4.6 KiB
JavaScript
'use strict';const require$$0$1=require('node:path'),fetchTextByLine=require('./fetch-text-by-line.YY5b5610.cjs'),trie=require('./trie.Vu1FNyv-.cjs'),index=require('./index.B8Uk9n3v.cjs'),base=require('./base.C13YY5P3.cjs'),fetchRetry=require('./fetch-retry.D06uBUaW.cjs'),domainset=require('./domainset.CSQfKAtf.cjs'),rejectDataSource=require('./reject-data-source.DaKwvNlG.cjs'),require$$0=require('foxts/append-set-elements-to-array');var buildCdnDownloadConf = {exports: {}};var hasRequiredBuildCdnDownloadConf;
|
|
|
|
function requireBuildCdnDownloadConf () {
|
|
if (hasRequiredBuildCdnDownloadConf) return buildCdnDownloadConf.exports;
|
|
hasRequiredBuildCdnDownloadConf = 1;
|
|
(function (module, exports) {
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "buildCdnDownloadConf", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return buildCdnDownloadConf;
|
|
}
|
|
});
|
|
const _nodepath = /*#__PURE__*/ _interop_require_default(require$$0$1);
|
|
const _fetchtextbyline = /*@__PURE__*/ fetchTextByLine.a();
|
|
const _trie = /*@__PURE__*/ trie.r();
|
|
const _trace = /*@__PURE__*/ index.r();
|
|
const _description = /*@__PURE__*/ base.r();
|
|
const _appendarrayinplace = /*@__PURE__*/ base.a();
|
|
const _dir = /*@__PURE__*/ fetchRetry.a();
|
|
const _domainset = /*@__PURE__*/ domainset.r();
|
|
const _rejectdatasource = /*@__PURE__*/ rejectDataSource.r();
|
|
const _appendsetelementstoarray = require$$0;
|
|
function _interop_require_default(obj) {
|
|
return obj && obj.__esModule ? obj : {
|
|
default: obj
|
|
};
|
|
}
|
|
const getS3OSSDomainsPromise = (async ()=>{
|
|
const trie = new _trie.HostnameTrie();
|
|
for await (const line of (await (0, _fetchtextbyline.fetchRemoteTextByLine)('https://publicsuffix.org/list/public_suffix_list.dat', true))){
|
|
trie.add(line);
|
|
}
|
|
/**
|
|
* Extract OSS domain from publicsuffix list
|
|
*/ const S3OSSDomains = new Set();
|
|
trie.find('.amazonaws.com').forEach((line)=>{
|
|
if ((line.startsWith('s3-') || line.startsWith('s3.')) && !line.includes('cn-')) {
|
|
S3OSSDomains.add('.' + line);
|
|
}
|
|
});
|
|
trie.find('.scw.cloud').forEach((line)=>{
|
|
if ((line.startsWith('s3-') || line.startsWith('s3.')) && !line.includes('cn-')) {
|
|
S3OSSDomains.add('.' + line);
|
|
}
|
|
});
|
|
trie.find('sakurastorage.jp').forEach((line)=>{
|
|
if (line.startsWith('s3-') || line.startsWith('s3.')) {
|
|
S3OSSDomains.add('.' + line);
|
|
}
|
|
});
|
|
return S3OSSDomains;
|
|
})();
|
|
const cdnDomainsListPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/cdn.conf'));
|
|
const downloadDomainSetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/download.conf'));
|
|
const steamDomainSetPromise = (0, _fetchtextbyline.readFileIntoProcessedArray)(_nodepath.default.join(_dir.SOURCE_DIR, 'domainset/game-download.conf'));
|
|
const buildCdnDownloadConf = (0, _trace.task)(require.main === module, __filename)(async (span)=>{
|
|
const [S3OSSDomains, cdnDomainsList, downloadDomainSet, steamDomainSet] = await Promise.all([
|
|
getS3OSSDomainsPromise,
|
|
cdnDomainsListPromise,
|
|
downloadDomainSetPromise,
|
|
steamDomainSetPromise
|
|
]);
|
|
// Move S3 domains to download domain set, since S3 files may be large
|
|
(0, _appendsetelementstoarray.appendSetElementsToArray)(downloadDomainSet, S3OSSDomains);
|
|
(0, _appendarrayinplace.appendArrayInPlace)(downloadDomainSet, steamDomainSet);
|
|
// we have whitelisted the crashlytics domain, and we also want to put it in CDN policy
|
|
(0, _appendarrayinplace.appendArrayInPlace)(cdnDomainsList, _rejectdatasource.CRASHLYTICS_WHITELIST);
|
|
return Promise.all([
|
|
new _domainset.DomainsetOutput(span, 'cdn').withTitle('Sukka\'s Ruleset - CDN Domains').withDescription([
|
|
..._description.SHARED_DESCRIPTION,
|
|
'',
|
|
'This file contains object storage and static assets CDN domains.'
|
|
]).addFromDomainset(cdnDomainsList).write(),
|
|
new _domainset.DomainsetOutput(span, 'download').withTitle('Sukka\'s Ruleset - Large Files Hosting Domains').withDescription([
|
|
..._description.SHARED_DESCRIPTION,
|
|
'',
|
|
'This file contains domains for software updating & large file hosting.'
|
|
]).addFromDomainset(downloadDomainSet).write()
|
|
]);
|
|
});
|
|
} (buildCdnDownloadConf, buildCdnDownloadConf.exports));
|
|
return buildCdnDownloadConf.exports;
|
|
}exports.r=requireBuildCdnDownloadConf; |