build-cloudmounter-rules.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import path from 'path';
  2. import { DOMAINS, PROCESS_NAMES } from '../Source/non_ip/cloudmounter';
  3. import { SHARED_DESCRIPTION } from './lib/constants';
  4. import { createRuleset } from './lib/create-file';
  5. import { task } from './lib/trace-runner';
  6. const outputSurgeDir = path.resolve(import.meta.dir, '../List');
  7. const outputClashDir = path.resolve(import.meta.dir, '../Clash');
  8. export const buildCloudMounterRules = task(import.meta.path, async () => {
  9. // AND,((SRC-IP,192.168.1.110), (DOMAIN, example.com))
  10. const results = DOMAINS.flatMap(domain => {
  11. return PROCESS_NAMES.map(process => {
  12. return `AND,((DOMAIN-SUFFIX,${domain}), (PROCESS-NAME, ${process}))`;
  13. });
  14. });
  15. const description = SHARED_DESCRIPTION;
  16. return Promise.all(createRuleset(
  17. 'Sukka\'s Ruleset - CloudMounter / RaiDrive',
  18. description,
  19. new Date(),
  20. results,
  21. 'domainset',
  22. path.resolve(outputSurgeDir, 'non_ip', 'cloudmounter.conf'),
  23. path.resolve(outputClashDir, 'non_ip', 'cloudmounter.txt')
  24. ));
  25. });
  26. if (import.meta.main) {
  27. buildCloudMounterRules();
  28. }