build-internal-reverse-chn-cidr.ts 893 B

12345678910111213141516171819202122232425262728293031
  1. import path from 'node:path';
  2. import { task } from './trace';
  3. import { exclude, merge } from 'fast-cidr-tools';
  4. import { getChnCidrPromise } from './build-chn-cidr';
  5. import { NON_CN_CIDR_INCLUDED_IN_CHNROUTE, RESERVED_IPV4_CIDR } from './constants/cidr';
  6. import { writeFile } from './lib/misc';
  7. import { OUTPUT_INTERNAL_DIR } from './constants/dir';
  8. export const buildInternalReverseChnCIDR = task(require.main === module, __filename)(async () => {
  9. const [cidr] = await getChnCidrPromise();
  10. const reversedCidr = merge(
  11. exclude(
  12. ['0.0.0.0/0'],
  13. RESERVED_IPV4_CIDR.concat(cidr),
  14. true
  15. ).concat(
  16. // https://github.com/misakaio/chnroutes2/issues/25
  17. NON_CN_CIDR_INCLUDED_IN_CHNROUTE
  18. )
  19. );
  20. const outputFile = path.join(OUTPUT_INTERNAL_DIR, 'reversed-chn-cidr.txt');
  21. return writeFile(
  22. outputFile,
  23. reversedCidr.join('\n') + '\n'
  24. );
  25. });