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