build-stream-service.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // @ts-check
  2. import type { Span } from './trace';
  3. import { task } from './trace';
  4. import { ALL, NORTH_AMERICA, EU, HK, TW, JP, KR } from '../Source/stream';
  5. import { SHARED_DESCRIPTION } from './lib/constants';
  6. import { RulesetOutput } from './lib/create-file';
  7. export const createRulesetForStreamService = (span: Span, fileId: string, title: string, streamServices: Array<import('../Source/stream').StreamService>) => {
  8. return span.traceChildAsync(fileId, async (childSpan) => Promise.all([
  9. // Domains
  10. new RulesetOutput(childSpan, fileId, 'non_ip')
  11. .withTitle(`Sukka's Ruleset - Stream Services: ${title}`)
  12. .withDescription([
  13. ...SHARED_DESCRIPTION,
  14. '',
  15. ...streamServices.map((i) => `- ${i.name}`)
  16. ])
  17. .addFromRuleset(streamServices.flatMap((i) => i.rules))
  18. .write(),
  19. // IP
  20. new RulesetOutput(childSpan, fileId, 'ip')
  21. .withTitle(`Sukka's Ruleset - Stream Services IPs: ${title}`)
  22. .withDescription([
  23. ...SHARED_DESCRIPTION,
  24. '',
  25. ...streamServices.map((i) => `- ${i.name}`)
  26. ])
  27. .bulkAddCIDR4NoResolve(streamServices.flatMap(i => i.ip?.v4 ?? []))
  28. .bulkAddCIDR6NoResolve(streamServices.flatMap(i => i.ip?.v6 ?? []))
  29. .write()
  30. ]));
  31. };
  32. export const buildStreamService = task(require.main === module, __filename)(async (span) => {
  33. return Promise.all([
  34. createRulesetForStreamService(span, 'stream', 'All', ALL),
  35. createRulesetForStreamService(span, 'stream_us', 'North America', NORTH_AMERICA),
  36. createRulesetForStreamService(span, 'stream_eu', 'Europe', EU),
  37. createRulesetForStreamService(span, 'stream_hk', 'Hong Kong', HK),
  38. createRulesetForStreamService(span, 'stream_tw', 'Taiwan', TW),
  39. createRulesetForStreamService(span, 'stream_jp', 'Japan', JP),
  40. // createRulesetForStreamService('stream_au', 'Oceania', AU),
  41. createRulesetForStreamService(span, 'stream_kr', 'Korean', KR)
  42. // createRulesetForStreamService('stream_south_east_asia', 'South East Asia', SOUTH_EAST_ASIA)
  43. ]);
  44. });