diff --git a/Build/index.ts b/Build/index.ts index 2e19e05b..3abeaf4a 100644 --- a/Build/index.ts +++ b/Build/index.ts @@ -14,6 +14,7 @@ import { buildStreamService } from './build-stream-service'; import { buildRedirectModule } from './build-redirect-module'; import { validate } from './validate-domainset'; +import { buildMicrosoftCdn } from './build-microsoft-cdn'; import { buildSSPanelUIMAppProfile } from './build-sspanel-appprofile'; import { buildPublic } from './build-public'; @@ -67,6 +68,8 @@ import { downloadMockAssets } from './download-mock-assets'; const buildRedirectModulePromise = downloadPreviousBuildPromise.then(() => buildRedirectModule()); const buildStreamServicePromise = downloadPreviousBuildPromise.then(() => buildStreamService()); + const buildMicrosoftCdnPromise = downloadPreviousBuildPromise.then(() => buildMicrosoftCdn()); + const buildSSPanelUIMAppProfilePromise = Promise.all([ downloadPreviousBuildPromise ]).then(() => buildSSPanelUIMAppProfile()); @@ -90,6 +93,7 @@ import { downloadMockAssets } from './download-mock-assets'; buildDomesticRulesetPromise, buildRedirectModulePromise, buildStreamServicePromise, + buildMicrosoftCdnPromise, buildSSPanelUIMAppProfilePromise, downloadMockAssetsPromise diff --git a/Build/lib/clash.ts b/Build/lib/clash.ts index 7995a362..bcf80734 100644 --- a/Build/lib/clash.ts +++ b/Build/lib/clash.ts @@ -16,10 +16,23 @@ const CLASH_SUPPORTED_RULE_TYPE = [ 'PROCESS-PATH' ]; +const REQUIRE_REWRITE = { + 'DEST-PORT': 'DST-PORT', + 'IN-PORT': 'SRC-PORT' +} as const; + export const surgeRulesetToClashClassicalTextRuleset = (rules: string[] | Set) => { const trie = Trie.from(rules); + return CLASH_SUPPORTED_RULE_TYPE.flatMap( type => trie.find(`${type},`) + ).concat( + Object.keys(REQUIRE_REWRITE).flatMap( + (type) => { + const found = trie.find(`${type},`); + return found.map(line => `${REQUIRE_REWRITE[type as keyof typeof REQUIRE_REWRITE]}${line.slice(type.length)}`); + } + ) ); };