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 type { TaskResult } from './lib/trace-runner';
import { buildCloudMounterRules } from './build-cloudmounter-rules';
(async () => {
console.log('Bun version:', Bun.version, Bun.revision);
@ -74,6 +75,8 @@ import type { TaskResult } from './lib/trace-runner';
const downloadMockAssetsPromise = downloadMockAssets();
const buildCloudMounterRulesPromise = downloadPreviousBuildPromise.then(() => buildCloudMounterRules());
const stats = await Promise.all([
downloadPreviousBuildPromise,
buildCommonPromise,
@ -93,6 +96,7 @@ import type { TaskResult } from './lib/trace-runner';
buildStreamServicePromise,
buildMicrosoftCdnPromise,
buildSSPanelUIMAppProfilePromise,
buildCloudMounterRulesPromise,
downloadMockAssetsPromise
]);

View File

@ -82,7 +82,7 @@ export async function compareAndWriteFile(linesA: string[], filePath: string) {
}, 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 [
'#########################################',
`# ${title}`,
@ -96,7 +96,7 @@ export const withBannerArray = (title: string, description: string[], date: Date
};
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
) => {
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": [
"./Source/**/*.js",
"./Build/**/*.ts"
"./Build/**/*.ts",
"Source/**/*.ts"
]
}