build-telegram-cidr.ts 1.1 KB

123456789101112131415161718192021222324252627282930
  1. // @ts-check
  2. import { task } from './trace';
  3. import { SHARED_DESCRIPTION } from './constants/description';
  4. import { RulesetOutput } from './lib/rules/ruleset';
  5. import { getTelegramCIDRPromise } from './lib/get-telegram-backup-ip';
  6. export const buildTelegramCIDR = task(require.main === module, __filename)(async (span) => {
  7. const { timestamp, ipcidr, ipcidr6 } = await span.traceChildAsync('get telegram cidr', getTelegramCIDRPromise);
  8. if (ipcidr.length + ipcidr6.length === 0) {
  9. throw new Error('Failed to fetch data!');
  10. }
  11. const description = [
  12. ...SHARED_DESCRIPTION,
  13. 'Data from:',
  14. ' - https://core.telegram.org/resources/cidr.txt'
  15. ];
  16. return new RulesetOutput(span, 'telegram', 'ip')
  17. .withTitle('Sukka\'s Ruleset - Telegram IP CIDR')
  18. .withDescription(description)
  19. // .withDate(date) // With extra data source, we no longer use last-modified for file date
  20. .appendDataSource(
  21. 'https://core.telegram.org/resources/cidr.txt (last updated: ' + new Date(timestamp).toISOString() + ')'
  22. )
  23. .bulkAddCIDR4NoResolve(ipcidr)
  24. .bulkAddCIDR6NoResolve(ipcidr6)
  25. .write();
  26. });