mirror of
https://github.com/SukkaW/Surge.git
synced 2026-01-29 01:51:52 +08:00
Update CDN / Download / Domestic Hosts
This commit is contained in:
@@ -41,31 +41,49 @@ const getS3OSSDomainsPromise = (async (): Promise<Set<string>> => {
|
||||
return S3OSSDomains;
|
||||
})();
|
||||
|
||||
const buildCdnConf = task(import.meta.path, async (span) => {
|
||||
export const buildCdnDownloadConf = task(import.meta.path, async (span) => {
|
||||
/** @type {string[]} */
|
||||
const cdnDomainsList: string[] = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/cdn.conf'));
|
||||
(await getS3OSSDomainsPromise).forEach((domain: string) => { cdnDomainsList.push(`DOMAIN-SUFFIX,${domain}`); });
|
||||
|
||||
const description: string[] = [
|
||||
...SHARED_DESCRIPTION,
|
||||
'',
|
||||
'This file contains object storage and static assets CDN domains.'
|
||||
];
|
||||
const downloadDomainSet: string[] = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/domainset/download.conf'));
|
||||
const steamDomainSet: string[] = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/domainset/steam.conf'));
|
||||
|
||||
return createRuleset(
|
||||
span,
|
||||
'Sukka\'s Ruleset - CDN Domains',
|
||||
description,
|
||||
new Date(),
|
||||
cdnDomainsList,
|
||||
'ruleset',
|
||||
path.resolve(import.meta.dir, '../List/non_ip/cdn.conf'),
|
||||
path.resolve(import.meta.dir, '../Clash/non_ip/cdn.txt')
|
||||
);
|
||||
return Promise.all([
|
||||
createRuleset(
|
||||
span,
|
||||
'Sukka\'s Ruleset - CDN Domains',
|
||||
[
|
||||
...SHARED_DESCRIPTION,
|
||||
'',
|
||||
'This file contains object storage and static assets CDN domains.'
|
||||
],
|
||||
new Date(),
|
||||
cdnDomainsList,
|
||||
'ruleset',
|
||||
path.resolve(import.meta.dir, '../List/non_ip/cdn.conf'),
|
||||
path.resolve(import.meta.dir, '../Clash/non_ip/cdn.txt')
|
||||
),
|
||||
createRuleset(
|
||||
span,
|
||||
'Sukka\'s Ruleset - Large Files Hosting Domains',
|
||||
[
|
||||
...SHARED_DESCRIPTION,
|
||||
'',
|
||||
'This file contains domains for software updating & large file hosting.'
|
||||
],
|
||||
new Date(),
|
||||
[
|
||||
...downloadDomainSet,
|
||||
...steamDomainSet
|
||||
],
|
||||
'domainset',
|
||||
path.resolve(import.meta.dir, '../List/domainset/download.conf'),
|
||||
path.resolve(import.meta.dir, '../Clash/domainset/download.txt')
|
||||
)
|
||||
]);
|
||||
});
|
||||
|
||||
export { buildCdnConf };
|
||||
|
||||
if (import.meta.main) {
|
||||
buildCdnConf();
|
||||
buildCdnDownloadConf();
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { getAppleCdnDomainsPromise } from './build-apple-cdn';
|
||||
import { getDomesticDomainsRulesetPromise } from './build-domestic-ruleset';
|
||||
import { surgeRulesetToClashClassicalTextRuleset } from './lib/clash';
|
||||
import { surgeRulesetToClashClassicalTextRuleset, surgeDomainsetToClashRuleset } from './lib/clash';
|
||||
import { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
|
||||
import { task } from './trace';
|
||||
import path from 'path';
|
||||
@@ -16,6 +16,7 @@ const POLICY_GROUPS: Array<[name: string, insertProxy: boolean, insertDirect: bo
|
||||
['Global', true, true],
|
||||
['Microsoft & Apple', true, true],
|
||||
['Stream', true, false],
|
||||
['Steam Download', true, true],
|
||||
['Domestic', false, true],
|
||||
['Final Match', true, true]
|
||||
];
|
||||
@@ -35,6 +36,7 @@ export const buildSSPanelUIMAppProfile = task(import.meta.path, async (span) =>
|
||||
microsoftDomains,
|
||||
appleDomains,
|
||||
streamDomains,
|
||||
steamDomains,
|
||||
globalDomains,
|
||||
globalPlusDomains,
|
||||
telegramDomains,
|
||||
@@ -55,6 +57,8 @@ export const buildSSPanelUIMAppProfile = task(import.meta.path, async (span) =>
|
||||
readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/apple_services.conf')).then(surgeRulesetToClashClassicalTextRuleset),
|
||||
// stream - domains
|
||||
surgeRulesetToClashClassicalTextRuleset(AllStreamServices.flatMap((i) => i.rules)),
|
||||
// steam - domains
|
||||
readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/domainset/steam.conf')).then(surgeDomainsetToClashRuleset),
|
||||
// global - domains
|
||||
readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/global.conf')).then(surgeRulesetToClashClassicalTextRuleset),
|
||||
readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/global_plus.conf')).then(surgeRulesetToClashClassicalTextRuleset),
|
||||
@@ -92,6 +96,7 @@ export const buildSSPanelUIMAppProfile = task(import.meta.path, async (span) =>
|
||||
...appleDomains
|
||||
],
|
||||
streamDomains,
|
||||
steamDomains,
|
||||
[
|
||||
...globalDomains,
|
||||
...globalPlusDomains,
|
||||
@@ -123,16 +128,16 @@ function generateAppProfile(
|
||||
directDomains: string[],
|
||||
microsoftAppleDomains: string[],
|
||||
streamDomains: string[],
|
||||
steamDomains: string[],
|
||||
globalDomains: string[],
|
||||
|
||||
lanDomains: string[],
|
||||
directCidrs: string[],
|
||||
streamCidrs: string[],
|
||||
globalCidrs: string[],
|
||||
lanCidrs: string[]
|
||||
) {
|
||||
const result: string[] = [];
|
||||
|
||||
result.push(
|
||||
return [
|
||||
'<?php',
|
||||
'',
|
||||
`// # Build ${new Date().toISOString()}`,
|
||||
@@ -190,6 +195,8 @@ function generateAppProfile(
|
||||
...microsoftAppleDomains.map(line => ` '${line},Microsoft & Apple',`),
|
||||
// stream - domains
|
||||
...streamDomains.map(line => ` '${line},Stream',`),
|
||||
// steam download - domains
|
||||
...steamDomains.map(line => ` '${line},Steam Download',`),
|
||||
// global - domains
|
||||
...globalDomains.map(line => ` '${line},Global',`),
|
||||
// microsoft & apple - ip cidr (nope)
|
||||
@@ -207,7 +214,5 @@ function generateAppProfile(
|
||||
' \'MATCH,Final Match\',',
|
||||
' ],',
|
||||
'];'
|
||||
);
|
||||
|
||||
return result;
|
||||
];
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { downloadPreviousBuild } from './download-previous-build';
|
||||
import { buildCommon } from './build-common';
|
||||
import { buildAntiBogusDomain } from './build-anti-bogus-domain';
|
||||
import { buildAppleCdn } from './build-apple-cdn';
|
||||
import { buildCdnConf } from './build-cdn-conf';
|
||||
import { buildCdnDownloadConf } from './build-cdn-download-conf';
|
||||
import { buildRejectDomainSet } from './build-reject-domainset';
|
||||
import { buildTelegramCIDR } from './build-telegram-cidr';
|
||||
import { buildChnCidr } from './build-chn-cidr';
|
||||
@@ -41,7 +41,7 @@ import { createSpan, printTraceResult } from './trace';
|
||||
const buildCommonPromise = downloadPreviousBuildPromise.then(() => buildCommon(rootSpan));
|
||||
const buildAntiBogusDomainPromise = downloadPreviousBuildPromise.then(() => buildAntiBogusDomain(rootSpan));
|
||||
const buildAppleCdnPromise = downloadPreviousBuildPromise.then(() => buildAppleCdn(rootSpan));
|
||||
const buildCdnConfPromise = downloadPreviousBuildPromise.then(() => buildCdnConf(rootSpan));
|
||||
const buildCdnConfPromise = downloadPreviousBuildPromise.then(() => buildCdnDownloadConf(rootSpan));
|
||||
const buildRejectDomainSetPromise = downloadPreviousBuildPromise.then(() => buildRejectDomainSet(rootSpan));
|
||||
const buildTelegramCIDRPromise = downloadPreviousBuildPromise.then(() => buildTelegramCIDR(rootSpan));
|
||||
const buildChnCidrPromise = downloadPreviousBuildPromise.then(() => buildChnCidr(rootSpan));
|
||||
|
||||
@@ -39,3 +39,7 @@ export const surgeRulesetToClashClassicalTextRuleset = (rules: string[] | Set<st
|
||||
export const surgeDomainsetToClashDomainset = (domainset: string[]) => {
|
||||
return domainset.map(i => (i[0] === '.' ? `+${i}` : i));
|
||||
};
|
||||
|
||||
export const surgeDomainsetToClashRuleset = (domainset: string[]) => {
|
||||
return domainset.map(i => (i[0] === '.' ? `DOMAIN-SUFFIX,${i.slice(1)}` : `DOMAIN,${i}`));
|
||||
};
|
||||
|
||||
@@ -27,8 +27,8 @@ export function isProbablyIpv4(hostname: string): boolean {
|
||||
|
||||
return (
|
||||
numberOfDots === 3
|
||||
&& hostname.charCodeAt(0) !== 46
|
||||
&& /* '.' */ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */
|
||||
&& hostname.charCodeAt(0) !== 46 /* '.' */
|
||||
&& hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user