Update CDN / Download / Domestic Hosts

This commit is contained in:
SukkaW
2024-01-17 19:15:43 +08:00
parent 4ecc4f170d
commit 1c72dcb5e0
10 changed files with 93 additions and 47 deletions

View File

@@ -41,31 +41,49 @@ const getS3OSSDomainsPromise = (async (): Promise<Set<string>> => {
return S3OSSDomains; return S3OSSDomains;
})(); })();
const buildCdnConf = task(import.meta.path, async (span) => { export const buildCdnDownloadConf = task(import.meta.path, async (span) => {
/** @type {string[]} */ /** @type {string[]} */
const cdnDomainsList: string[] = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/cdn.conf')); 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}`); }); (await getS3OSSDomainsPromise).forEach((domain: string) => { cdnDomainsList.push(`DOMAIN-SUFFIX,${domain}`); });
const description: string[] = [ const downloadDomainSet: string[] = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/domainset/download.conf'));
...SHARED_DESCRIPTION, const steamDomainSet: string[] = await readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/domainset/steam.conf'));
'',
'This file contains object storage and static assets CDN domains.'
];
return createRuleset( return Promise.all([
span, createRuleset(
'Sukka\'s Ruleset - CDN Domains', span,
description, 'Sukka\'s Ruleset - CDN Domains',
new Date(), [
cdnDomainsList, ...SHARED_DESCRIPTION,
'ruleset', '',
path.resolve(import.meta.dir, '../List/non_ip/cdn.conf'), 'This file contains object storage and static assets CDN domains.'
path.resolve(import.meta.dir, '../Clash/non_ip/cdn.txt') ],
); 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) { if (import.meta.main) {
buildCdnConf(); buildCdnDownloadConf();
} }

View File

@@ -1,6 +1,6 @@
import { getAppleCdnDomainsPromise } from './build-apple-cdn'; import { getAppleCdnDomainsPromise } from './build-apple-cdn';
import { getDomesticDomainsRulesetPromise } from './build-domestic-ruleset'; 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 { readFileIntoProcessedArray } from './lib/fetch-text-by-line';
import { task } from './trace'; import { task } from './trace';
import path from 'path'; import path from 'path';
@@ -16,6 +16,7 @@ const POLICY_GROUPS: Array<[name: string, insertProxy: boolean, insertDirect: bo
['Global', true, true], ['Global', true, true],
['Microsoft & Apple', true, true], ['Microsoft & Apple', true, true],
['Stream', true, false], ['Stream', true, false],
['Steam Download', true, true],
['Domestic', false, true], ['Domestic', false, true],
['Final Match', true, true] ['Final Match', true, true]
]; ];
@@ -35,6 +36,7 @@ export const buildSSPanelUIMAppProfile = task(import.meta.path, async (span) =>
microsoftDomains, microsoftDomains,
appleDomains, appleDomains,
streamDomains, streamDomains,
steamDomains,
globalDomains, globalDomains,
globalPlusDomains, globalPlusDomains,
telegramDomains, 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), readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/apple_services.conf')).then(surgeRulesetToClashClassicalTextRuleset),
// stream - domains // stream - domains
surgeRulesetToClashClassicalTextRuleset(AllStreamServices.flatMap((i) => i.rules)), surgeRulesetToClashClassicalTextRuleset(AllStreamServices.flatMap((i) => i.rules)),
// steam - domains
readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/domainset/steam.conf')).then(surgeDomainsetToClashRuleset),
// global - domains // 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.conf')).then(surgeRulesetToClashClassicalTextRuleset),
readFileIntoProcessedArray(path.resolve(import.meta.dir, '../Source/non_ip/global_plus.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 ...appleDomains
], ],
streamDomains, streamDomains,
steamDomains,
[ [
...globalDomains, ...globalDomains,
...globalPlusDomains, ...globalPlusDomains,
@@ -123,16 +128,16 @@ function generateAppProfile(
directDomains: string[], directDomains: string[],
microsoftAppleDomains: string[], microsoftAppleDomains: string[],
streamDomains: string[], streamDomains: string[],
steamDomains: string[],
globalDomains: string[], globalDomains: string[],
lanDomains: string[], lanDomains: string[],
directCidrs: string[], directCidrs: string[],
streamCidrs: string[], streamCidrs: string[],
globalCidrs: string[], globalCidrs: string[],
lanCidrs: string[] lanCidrs: string[]
) { ) {
const result: string[] = []; return [
result.push(
'<?php', '<?php',
'', '',
`// # Build ${new Date().toISOString()}`, `// # Build ${new Date().toISOString()}`,
@@ -190,6 +195,8 @@ function generateAppProfile(
...microsoftAppleDomains.map(line => ` '${line},Microsoft & Apple',`), ...microsoftAppleDomains.map(line => ` '${line},Microsoft & Apple',`),
// stream - domains // stream - domains
...streamDomains.map(line => ` '${line},Stream',`), ...streamDomains.map(line => ` '${line},Stream',`),
// steam download - domains
...steamDomains.map(line => ` '${line},Steam Download',`),
// global - domains // global - domains
...globalDomains.map(line => ` '${line},Global',`), ...globalDomains.map(line => ` '${line},Global',`),
// microsoft & apple - ip cidr (nope) // microsoft & apple - ip cidr (nope)
@@ -207,7 +214,5 @@ function generateAppProfile(
' \'MATCH,Final Match\',', ' \'MATCH,Final Match\',',
' ],', ' ],',
'];' '];'
); ];
return result;
} }

View File

@@ -2,7 +2,7 @@ import { downloadPreviousBuild } from './download-previous-build';
import { buildCommon } from './build-common'; import { buildCommon } from './build-common';
import { buildAntiBogusDomain } from './build-anti-bogus-domain'; import { buildAntiBogusDomain } from './build-anti-bogus-domain';
import { buildAppleCdn } from './build-apple-cdn'; 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 { buildRejectDomainSet } from './build-reject-domainset';
import { buildTelegramCIDR } from './build-telegram-cidr'; import { buildTelegramCIDR } from './build-telegram-cidr';
import { buildChnCidr } from './build-chn-cidr'; import { buildChnCidr } from './build-chn-cidr';
@@ -41,7 +41,7 @@ import { createSpan, printTraceResult } from './trace';
const buildCommonPromise = downloadPreviousBuildPromise.then(() => buildCommon(rootSpan)); const buildCommonPromise = downloadPreviousBuildPromise.then(() => buildCommon(rootSpan));
const buildAntiBogusDomainPromise = downloadPreviousBuildPromise.then(() => buildAntiBogusDomain(rootSpan)); const buildAntiBogusDomainPromise = downloadPreviousBuildPromise.then(() => buildAntiBogusDomain(rootSpan));
const buildAppleCdnPromise = downloadPreviousBuildPromise.then(() => buildAppleCdn(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 buildRejectDomainSetPromise = downloadPreviousBuildPromise.then(() => buildRejectDomainSet(rootSpan));
const buildTelegramCIDRPromise = downloadPreviousBuildPromise.then(() => buildTelegramCIDR(rootSpan)); const buildTelegramCIDRPromise = downloadPreviousBuildPromise.then(() => buildTelegramCIDR(rootSpan));
const buildChnCidrPromise = downloadPreviousBuildPromise.then(() => buildChnCidr(rootSpan)); const buildChnCidrPromise = downloadPreviousBuildPromise.then(() => buildChnCidr(rootSpan));

View File

@@ -39,3 +39,7 @@ export const surgeRulesetToClashClassicalTextRuleset = (rules: string[] | Set<st
export const surgeDomainsetToClashDomainset = (domainset: string[]) => { export const surgeDomainsetToClashDomainset = (domainset: string[]) => {
return domainset.map(i => (i[0] === '.' ? `+${i}` : i)); 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}`));
};

View File

@@ -27,8 +27,8 @@ export function isProbablyIpv4(hostname: string): boolean {
return ( return (
numberOfDots === 3 numberOfDots === 3
&& hostname.charCodeAt(0) !== 46 && hostname.charCodeAt(0) !== 46 /* '.' */
&& /* '.' */ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */ && hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */
); );
} }

View File

@@ -285,6 +285,9 @@ cdn.firebase.com
.blogblog.com .blogblog.com
img.youtube.com img.youtube.com
static.corp.google.com static.corp.google.com
.usercontent.google.com
safebrowsing.google.com
safebrowsing.googleapis.com
# >> Apple Live # >> Apple Live
events-live.apple.com events-live.apple.com
@@ -359,6 +362,8 @@ edgeassetservice.azureedge.net
edgestatic.azureedge.net edgestatic.azureedge.net
xpaywalletcdn.azureedge.net xpaywalletcdn.azureedge.net
edge-consumer-static.azureedge.net edge-consumer-static.azureedge.net
# Appcenter
mobilecenter.azureedge.net
# Microsoft Cookie Conscent # Microsoft Cookie Conscent
wcpstatic.microsoft.com wcpstatic.microsoft.com
# Xbox # Xbox
@@ -1129,7 +1134,7 @@ cdn.sstatic.net
steamuserimages-a.akamaihd.net steamuserimages-a.akamaihd.net
steamusercontent-a.akamaihd.net steamusercontent-a.akamaihd.net
steamvideo-a.akamaihd.net steamvideo-a.akamaihd.net
steamusercontent.com .steamusercontent.com
steamcdn-a.akamaihd.net steamcdn-a.akamaihd.net
# TikTok # TikTok
.ibytedtos.com .ibytedtos.com
@@ -1587,8 +1592,6 @@ cloudflare.tv
# www.tnaflix.com # www.tnaflix.com
cdn-fck.tnaflix.com cdn-fck.tnaflix.com
.tnastatic.com .tnastatic.com
# appcenter
mobilecenter.azureedge.net
# mapbox # mapbox
static-assets.mapbox.com static-assets.mapbox.com
# openstreetmap # openstreetmap
@@ -1902,8 +1905,6 @@ fiddle.jshell.net
.pornimg.xyz .pornimg.xyz
.hits.b3log.org .hits.b3log.org
.safebrowsing.apple .safebrowsing.apple
safebrowsing.google.com
safebrowsing.googleapis.com
api.wakatime.com api.wakatime.com
.divio-media.net .divio-media.net
.widget.clutch.co .widget.clutch.co
@@ -2329,3 +2330,4 @@ static.namebeta.com
images.arigatotravel.com images.arigatotravel.com
static-00.iconduck.com static-00.iconduck.com
cdn.unwire.hk cdn.unwire.hk
cdn.ywxi.net

View File

@@ -1,5 +1,4 @@
# $ meta_title Sukka's Ruleset - Large Files Hosting Domains # $ custom_build_script
# $ meta_description This file contains domains for software updating & large file hosting.
# >> Linux Distro # >> Linux Distro
# Alpine # Alpine
@@ -200,14 +199,14 @@ redstone-launcher.mojang.com
download.iboysoft.com download.iboysoft.com
# HyberBeam # HyberBeam
cdn.hyperbeam.com cdn.hyperbeam.com
# Steam
DOMAIN-SUFFIX,steamcontent.com
# DOMAIN-SUFFIX,steamserver.net
# Epic # Epic
DOMAIN-SUFFIX,download.epicgames.com .download.epicgames.com
# MikroTik # MikroTik
DOMAIN,download.mikrotik.com download.mikrotik.com
# ToDesktop # ToDesktop
download.todesktop.com download.todesktop.com
# NVIDIA # NVIDIA
DOMAIN,us.download.nvidia.com .download.nvidia.com
# AndroidFileHost
ava6.androidfilehost.com
ftp.androidfilehost.com

View File

@@ -0,0 +1,18 @@
# $ custom_build_script -- will be included in download.conf
.steamcontent.com
.content.steampowered.com
content1.steampowered.com
content2.steampowered.com
content3.steampowered.com
content4.steampowered.com
content5.steampowered.com
content6.steampowered.com
content7.steampowered.com
content8.steampowered.com
content-origin.steampowered.com
steam.apac.qtlglb.com
steam.eca.qtlglb.com
steam.naeu.qtlglb.com
steam.ru.qtlglb.com
# DOMAIN-SUFFIX,steamserver.net

View File

@@ -296,10 +296,9 @@ DOMAIN-SUFFIX,steam.ksyna.com
DOMAIN-SUFFIX,dl.bscstorage.net DOMAIN-SUFFIX,dl.bscstorage.net
DOMAIN-SUFFIX,dl.eccdnx.com DOMAIN-SUFFIX,dl.eccdnx.com
DOMAIN-SUFFIX,dl.pinyuncloud.com DOMAIN-SUFFIX,dl.pinyuncloud.com
DOMAIN-SUFFIX,steamcontent.tnkjmec.com DOMAIN-SUFFIX,tnkjmec.com
DOMAIN-SUFFIX,steampowered.com.8686c.com DOMAIN-SUFFIX,8686c.com
DOMAIN-SUFFIX,steamstatic.com.8686c.com DOMAIN-SUFFIX,pphimalayanrt.com
DOMAIN,xz.pphimalayanrt.com
DOMAIN-SUFFIX,steamchina.com DOMAIN-SUFFIX,steamchina.com
DOMAIN-SUFFIX,cdn.ubionline.com.cn DOMAIN-SUFFIX,cdn.ubionline.com.cn

View File

@@ -2,3 +2,4 @@
# $ meta_description This file contains ruleset for software updating & large file hosting. # $ meta_description This file contains ruleset for software updating & large file hosting.
AND,((DOMAIN-SUFFIX,mediafire.com), (DOMAIN-KEYWORD,download)) AND,((DOMAIN-SUFFIX,mediafire.com), (DOMAIN-KEYWORD,download))
AND,((DOMAIN-SUFFIX,debian.org), (DOMAIN-KEYWORD,ftp))