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