build-cdn-conf.js 1000 B

123456789101112131415161718192021222324252627282930313233343536
  1. const { fetchWithRetry } = require('./lib/fetch-retry');
  2. const fs = require('fs');
  3. const path = require('path');
  4. (async () => {
  5. console.time('Total Time - build-cdn-conf');
  6. const domains = (await (await fetchWithRetry('https://publicsuffix.org/list/public_suffix_list.dat')).text()).split('\n');
  7. const S3OSSDomains = domains.filter(line => {
  8. if (line) {
  9. return (
  10. line.startsWith('s3-')
  11. || line.startsWith('s3.')
  12. )
  13. && (
  14. line.endsWith('.amazonaws.com')
  15. || line.endsWith('.scw.cloud')
  16. )
  17. && !line.includes('cn-')
  18. }
  19. return false;
  20. })
  21. const filePath = path.resolve(__dirname, '../List/non_ip/cdn.conf');
  22. const content = (await fs.promises.readFile(filePath, 'utf-8'))
  23. .replace(
  24. '# --- [AWS S3 Replace Me] ---',
  25. S3OSSDomains.map(domain => `DOMAIN-SUFFIX,${domain}`).join('\n')
  26. );
  27. await fs.promises.writeFile(filePath, content, 'utf-8');
  28. console.timeEnd('Total Time - build-cdn-conf');
  29. })();