Browse Source

Update CDN / Download / Domestic Hosts

SukkaW 2 years ago
parent
commit
1c72dcb5e0

+ 37 - 19
Build/build-cdn-conf.ts → Build/build-cdn-download-conf.ts

@@ -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();
 }

+ 12 - 7
Build/build-sspanel-appprofile.ts

@@ -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 - 2
Build/index.ts

@@ -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));

+ 4 - 0
Build/lib/clash.ts

@@ -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}`));
+};

+ 2 - 2
Build/lib/is-fast-ip.ts

@@ -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 /* '.' */
   );
 }
 

+ 7 - 5
Source/domainset/cdn.conf

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

+ 7 - 8
Source/domainset/download.conf

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

+ 18 - 0
Source/domainset/steam.conf

@@ -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

+ 3 - 4
Source/non_ip/domestic.conf

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

+ 1 - 0
Source/non_ip/download.conf

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