build-sgmodule-always-realip.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import path from 'path';
  2. import { task } from './trace';
  3. import { compareAndWriteFile } from './lib/create-file';
  4. import { DIRECTS } from '../Source/non_ip/direct';
  5. const HOSTNAMES = [
  6. // Intranet, Router Setup, and mant more
  7. ...(Object.entries(DIRECTS)).flatMap(([, { domains }]) => domains.flatMap((domain) => [`*.${domain}`, domain])),
  8. // Network Detection, Captive Portal
  9. 'msftncsi.com',
  10. 'msftconnecttest.com',
  11. '*.msftncsi.com',
  12. '*.msftconnecttest.com',
  13. 'network-test.debian.org',
  14. 'detectportal.firefox.com',
  15. 'resolver1.opendns.com',
  16. '*.ipv6.microsoft.com',
  17. // Handle SNAT conversation properly
  18. '*.srv.nintendo.net',
  19. '*.stun.playstation.net',
  20. 'xbox.*.microsoft.com',
  21. '*.xboxlive.com',
  22. 'turn.twilio.com',
  23. '*.turn.twilio.com',
  24. 'stun.twilio.com',
  25. '*.stun.twilio.com',
  26. 'stun.syncthing.net',
  27. 'stun.*',
  28. 'controlplane.tailscale.com',
  29. // NTP
  30. 'time.*.com', 'time.*.gov, time.*.edu.cn, time.*.apple.com', 'time?.*.com', 'ntp.*.com', 'ntp?.*.com', '*.time.edu.cn', '*.ntp.org.cn', '*.pool.ntp.org', 'time*.cloud.tencent.com',
  31. // QQ Login
  32. 'localhost.ptlogin2.qq.com',
  33. 'localhost.sec.qq.com',
  34. 'localhost.work.weixin.qq.com',
  35. // Microsoft Auto Discovery
  36. 'PDC._msDCS.*.*',
  37. 'DC._msDCS.*.*',
  38. 'GC._msDCS.*.*',
  39. // Misc,
  40. '*.battlenet.com.cn',
  41. '*.blzstatic.cn',
  42. '*.battlenet.com'
  43. ] as const;
  44. export const buildAlwaysRealIPModule = task(import.meta.main, import.meta.path)(async (span) => {
  45. return compareAndWriteFile(
  46. span,
  47. [
  48. '#!name=[Sukka] Always Real IP Plus',
  49. `#!desc=Last Updated: ${new Date().toISOString()}`,
  50. '',
  51. '[General]',
  52. `always-real-ip = %APPEND% ${HOSTNAMES.join(', ')}`
  53. ],
  54. path.resolve(import.meta.dir, '../Modules/sukka_common_always_realip.sgmodule')
  55. );
  56. });