build-sgmodule-always-realip.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import path from 'path';
  2. import { task } from './trace';
  3. import { compareAndWriteFile } from './lib/create-file';
  4. const HOSTNAMES = [
  5. // Intranet
  6. '*.lan',
  7. '*.localdomain',
  8. '*.localhost',
  9. '*.home.arpa',
  10. // Network Detection, Captive Portal
  11. '*.msftncsi.com',
  12. '*.msftconnecttest.com',
  13. 'network-test.debian.org',
  14. 'detectportal.firefox.com',
  15. 'resolver1.opendns.com',
  16. // Handle SNAT conversation properly
  17. '*.srv.nintendo.net',
  18. '*.stun.playstation.net',
  19. 'xbox.*.microsoft.com',
  20. '*.xboxlive.com',
  21. '*.turn.twilio.com',
  22. '*.stun.twilio.com',
  23. 'stun.*.*',
  24. 'stun.*.*.*',
  25. // NTP
  26. 'time.*.com', 'time.*.gov, time.*.edu.cn, time.*.apple.com', 'time1.*.com', 'time2.*.com', 'time3.*.com', 'time4.*.com', 'time5.*.com', 'time6.*.com', 'time7.*.com', 'time8.*.com', 'time9.*.com, ntp.*.com, ntp1.*.com, ntp2.*.com, ntp3.*.com, ntp4.*.com, ntp5.*.com, ntp6.*.com, ntp7.*.com', 'time1.*.com', 'time2.*.com', 'time3.*.com', 'time4.*.com', 'time5.*.com', 'time6.*.com', 'time7.*.com', 'time8.*.com', 'ti me9.*.com', '*.time.edu.cn', '*.ntp.org.cn', '*.pool.ntp.org', 'time1.cloud.tencent.com',
  27. // AdGuard
  28. 'local.adguard.org',
  29. 'injections.adguard.org',
  30. // QQ Login
  31. 'localhost.ptlogin2.qq.com',
  32. 'localhost.sec.qq.com',
  33. 'localhost.work.weixin.qq.com',
  34. // Microsoft Auto Discovery
  35. 'PDC._msDCS.*.*',
  36. 'DC._msDCS.*.*',
  37. 'GC._msDCS.*.*'
  38. ] as const;
  39. export const buildAlwaysRealIPModule = task(import.meta.path, async () => {
  40. return compareAndWriteFile(
  41. [
  42. '#!name=[Sukka] Always Real IP Plus',
  43. `#!desc=Last Updated: ${new Date().toISOString()}`,
  44. '',
  45. '[General]',
  46. `always-real-ip = %APPEND% ${HOSTNAMES.join(', ')}`
  47. ],
  48. path.resolve(import.meta.dir, '../Modules/sukka_common_always_realip.sgmodule')
  49. );
  50. });
  51. if (import.meta.main) {
  52. buildAlwaysRealIPModule();
  53. }