Add CloudMounter Rules

This commit is contained in:
SukkaW 2024-01-10 23:10:00 +08:00
parent 3dfb07920e
commit 611dc7183a
5 changed files with 51 additions and 3 deletions

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

View File

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

View File

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

View File

@ -0,0 +1,9 @@
export const DOMAINS = [
'DOMAIN-SUFFIX,sharepoint.com',
'DOMAIN,www.googleapis.com'
];
export const PROCESS_NAMES = [
'CloudMounter'
// 'RaiDrive'
];

View File

@ -17,6 +17,7 @@
}, },
"include": [ "include": [
"./Source/**/*.js", "./Source/**/*.js",
"./Build/**/*.ts" "./Build/**/*.ts",
"Source/**/*.ts"
] ]
} }