build-cloudmounter-rules.ts 1.0 KB

1234567891011121314151617181920212223242526272829
  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 './trace';
  6. const outputSurgeDir = path.resolve(__dirname, '../List');
  7. const outputClashDir = path.resolve(__dirname, '../Clash');
  8. export const buildCloudMounterRules = task(typeof Bun !== 'undefined' ? Bun.main === __filename : require.main === module, __filename)(async (span) => {
  9. // AND,((SRC-IP,192.168.1.110), (DOMAIN, example.com))
  10. const results = DOMAINS.flatMap(domain => {
  11. return PROCESS_NAMES.map(process => `AND,((${domain}),(PROCESS-NAME,${process}))`);
  12. });
  13. const description = SHARED_DESCRIPTION;
  14. return createRuleset(
  15. span,
  16. 'Sukka\'s Ruleset - CloudMounter / RaiDrive',
  17. description,
  18. new Date(),
  19. results,
  20. 'ruleset',
  21. path.resolve(outputSurgeDir, 'non_ip', 'cloudmounter.conf'),
  22. path.resolve(outputClashDir, 'non_ip', 'cloudmounter.txt')
  23. );
  24. });