mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-12 01:00:34 +08:00
Add CloudMounter Rules
This commit is contained in:
parent
3dfb07920e
commit
611dc7183a
34
Build/build-cloudmounter-rules.ts
Normal file
34
Build/build-cloudmounter-rules.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import path from 'path';
|
||||||
|
import { DOMAINS, PROCESS_NAMES } from '../Source/non_ip/cloudmounter';
|
||||||
|
import { SHARED_DESCRIPTION } from './lib/constants';
|
||||||
|
import { createRuleset } from './lib/create-file';
|
||||||
|
import { task } from './lib/trace-runner';
|
||||||
|
|
||||||
|
const outputSurgeDir = path.resolve(import.meta.dir, '../List');
|
||||||
|
const outputClashDir = path.resolve(import.meta.dir, '../Clash');
|
||||||
|
|
||||||
|
export const buildCloudMounterRules = task(import.meta.path, async () => {
|
||||||
|
// AND,((SRC-IP,192.168.1.110), (DOMAIN, example.com))
|
||||||
|
|
||||||
|
const results = DOMAINS.flatMap(domain => {
|
||||||
|
return PROCESS_NAMES.map(process => {
|
||||||
|
return `AND,((DOMAIN-SUFFIX,${domain}), (PROCESS-NAME, ${process}))`;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const description = SHARED_DESCRIPTION;
|
||||||
|
|
||||||
|
return Promise.all(createRuleset(
|
||||||
|
'Sukka\'s Ruleset - CloudMounter / RaiDrive',
|
||||||
|
description,
|
||||||
|
new Date(),
|
||||||
|
results,
|
||||||
|
'domainset',
|
||||||
|
path.resolve(outputSurgeDir, 'non_ip', 'cloudmounter.conf'),
|
||||||
|
path.resolve(outputClashDir, 'non_ip', 'cloudmounter.txt')
|
||||||
|
));
|
||||||
|
});
|
||||||
|
|
||||||
|
if (import.meta.main) {
|
||||||
|
buildCloudMounterRules();
|
||||||
|
}
|
||||||
@ -24,6 +24,7 @@ import { buildPublic } from './build-public';
|
|||||||
import { downloadMockAssets } from './download-mock-assets';
|
import { downloadMockAssets } from './download-mock-assets';
|
||||||
|
|
||||||
import type { TaskResult } from './lib/trace-runner';
|
import type { TaskResult } from './lib/trace-runner';
|
||||||
|
import { buildCloudMounterRules } from './build-cloudmounter-rules';
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
console.log('Bun version:', Bun.version, Bun.revision);
|
console.log('Bun version:', Bun.version, Bun.revision);
|
||||||
@ -74,6 +75,8 @@ import type { TaskResult } from './lib/trace-runner';
|
|||||||
|
|
||||||
const downloadMockAssetsPromise = downloadMockAssets();
|
const downloadMockAssetsPromise = downloadMockAssets();
|
||||||
|
|
||||||
|
const buildCloudMounterRulesPromise = downloadPreviousBuildPromise.then(() => buildCloudMounterRules());
|
||||||
|
|
||||||
const stats = await Promise.all([
|
const stats = await Promise.all([
|
||||||
downloadPreviousBuildPromise,
|
downloadPreviousBuildPromise,
|
||||||
buildCommonPromise,
|
buildCommonPromise,
|
||||||
@ -93,6 +96,7 @@ import type { TaskResult } from './lib/trace-runner';
|
|||||||
buildStreamServicePromise,
|
buildStreamServicePromise,
|
||||||
buildMicrosoftCdnPromise,
|
buildMicrosoftCdnPromise,
|
||||||
buildSSPanelUIMAppProfilePromise,
|
buildSSPanelUIMAppProfilePromise,
|
||||||
|
buildCloudMounterRulesPromise,
|
||||||
downloadMockAssetsPromise
|
downloadMockAssetsPromise
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -82,7 +82,7 @@ export async function compareAndWriteFile(linesA: string[], filePath: string) {
|
|||||||
}, picocolors.gray);
|
}, picocolors.gray);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const withBannerArray = (title: string, description: string[], date: Date, content: string[]) => {
|
export const withBannerArray = (title: string, description: string[] | readonly string[], date: Date, content: string[]) => {
|
||||||
return [
|
return [
|
||||||
'#########################################',
|
'#########################################',
|
||||||
`# ${title}`,
|
`# ${title}`,
|
||||||
@ -96,7 +96,7 @@ export const withBannerArray = (title: string, description: string[], date: Date
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const createRuleset = (
|
export const createRuleset = (
|
||||||
title: string, description: string[], date: Date, content: string[],
|
title: string, description: string[] | readonly string[], date: Date, content: string[],
|
||||||
type: 'ruleset' | 'domainset', surgePath: string, clashPath: string
|
type: 'ruleset' | 'domainset', surgePath: string, clashPath: string
|
||||||
) => {
|
) => {
|
||||||
const surgeContent = withBannerArray(title, description, date, content);
|
const surgeContent = withBannerArray(title, description, date, content);
|
||||||
|
|||||||
9
Source/non_ip/cloudmounter.ts
Normal file
9
Source/non_ip/cloudmounter.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
export const DOMAINS = [
|
||||||
|
'DOMAIN-SUFFIX,sharepoint.com',
|
||||||
|
'DOMAIN,www.googleapis.com'
|
||||||
|
];
|
||||||
|
|
||||||
|
export const PROCESS_NAMES = [
|
||||||
|
'CloudMounter'
|
||||||
|
// 'RaiDrive'
|
||||||
|
];
|
||||||
@ -17,6 +17,7 @@
|
|||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"./Source/**/*.js",
|
"./Source/**/*.js",
|
||||||
"./Build/**/*.ts"
|
"./Build/**/*.ts",
|
||||||
|
"Source/**/*.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user