build-dns-china.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const https = require('https');
  2. let es;
  3. try {
  4. es = require('event-stream');
  5. } catch (e) {
  6. console.log('Dependencies not found');
  7. console.log('"npm i unzip-stream event-stream csv2" then try again!');
  8. console.error(e);
  9. process.exit(1);
  10. }
  11. (async () => {
  12. const dnsmasqconfDomains = await fetchAndParseDnsmasqDomains();
  13. console.log(dnsmasqconfDomains.length);
  14. })();
  15. function fetchAndParseDnsmasqDomains() {
  16. const data = [];
  17. return new Promise((resolve, reject) => {
  18. const req = https.request(
  19. {
  20. hostname: 'raw.githubusercontent.com',
  21. path: '/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf',
  22. method: 'GET',
  23. },
  24. (res) => {
  25. const s = res
  26. .pipe(es.split())
  27. .pipe(es.map(line => {
  28. s.pause();
  29. const domain = line
  30. .replaceAll('server=/', '')
  31. .replaceAll('/114.114.114.114', '');
  32. data.push(domain);
  33. s.resume();
  34. }))
  35. .on('error', reject)
  36. .on('end', () => {
  37. resolve(data);
  38. });
  39. res.on('error', reject);
  40. }
  41. );
  42. req.end();
  43. })
  44. }