direct.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. export interface DNSMapping {
  2. hosts: {
  3. [domain: string]: string[]
  4. },
  5. /** which also disallows wildcard */
  6. realip: boolean,
  7. /** should convert to ruleset */
  8. ruleset: boolean,
  9. dns: string,
  10. /**
  11. * domain[0]
  12. *
  13. * + subdomain only
  14. * $ domain only exact match
  15. * [none] domain and subdomain
  16. */
  17. domains: string[]
  18. }
  19. export const DIRECTS = {
  20. HOTSPOT_CAPTIVE_PORTAL: {
  21. dns: 'system',
  22. hosts: {},
  23. realip: false,
  24. ruleset: true,
  25. domains: [
  26. 'securelogin.com.cn',
  27. '$captive.apple.com',
  28. '$hotspot.cslwifi.com'
  29. ]
  30. },
  31. SYSTEM: {
  32. dns: 'system',
  33. hosts: {},
  34. realip: true,
  35. ruleset: false,
  36. domains: [
  37. '+m2m',
  38. // '+ts.net', // TailScale Magic DNS
  39. // AdGuard -- needs to be real ip otherwise AdGuard App will not recognize it, mustn't be fake ip
  40. '$injections.adguard.org',
  41. '$local.adguard.org',
  42. // Auto Discovery
  43. '+bogon'
  44. ]
  45. }
  46. } as const satisfies Record<string, DNSMapping>;
  47. export const LAN = {
  48. LAN_WITHOUT_REAL_IP: {
  49. dns: 'system',
  50. hosts: {
  51. '127.0.0.1.sslip.io': ['127.0.0.1'],
  52. '127.atlas.skk.moe': ['127.0.0.1']
  53. },
  54. realip: false,
  55. ruleset: true,
  56. domains: [
  57. // Common Router
  58. // 'zte.home', // ZTE CPE
  59. // 'airbox.home',
  60. // 'bthub.home',
  61. // 'bthomehub.home',
  62. // 'hitronhub.home',
  63. // 'web.setup.home'
  64. // Aruba Router
  65. '$instant.arubanetworks.com',
  66. '$setmeup.arubanetworks.com',
  67. // ASUS router
  68. '$router.asus.com',
  69. '$repeater.asus.com',
  70. 'asusrouter.com',
  71. // NetGear
  72. 'routerlogin.net',
  73. 'routerlogin.com',
  74. // Tenda WiFi
  75. // 'tendawifi.com',
  76. // TP-Link Router
  77. 'tplinkwifi.net',
  78. 'tplogin.cn',
  79. 'tplinkap.net',
  80. 'tplinkmodem.net',
  81. 'tplinkplclogin.net',
  82. 'tplinkrepeater.net',
  83. // UniFi
  84. '+ui.direct',
  85. '$unifi',
  86. // Other Router
  87. // '$router.com',
  88. '+huaweimobilewifi.com',
  89. '+router',
  90. // 'my.router',
  91. // 'samsung.router',
  92. // '$easy.box', // Vodafone EasyBox
  93. '$aterm.me',
  94. '$console.gl-inet.com',
  95. // '$fritz.box',
  96. // '$fritz.repeater',
  97. // '$myfritz.box',
  98. // '$speedport.ip', // Telekom
  99. // '$giga.cube', // Vodafone GigaCube
  100. '$homerouter.cpe', // Huawei LTE CPE
  101. '$mobile.hotspot', // T-Mobile Hotspot
  102. '$ntt.setup',
  103. '$pi.hole',
  104. '+plex.direct',
  105. // 'web.setup'
  106. // AS112
  107. '+home',
  108. '10.in-addr.arpa',
  109. '16.172.in-addr.arpa',
  110. '17.172.in-addr.arpa',
  111. '18.172.in-addr.arpa',
  112. '19.172.in-addr.arpa',
  113. // '2?.172.in-addr.arpa',
  114. '20.172.in-addr.arpa',
  115. '21.172.in-addr.arpa',
  116. '22.172.in-addr.arpa',
  117. '23.172.in-addr.arpa',
  118. '24.172.in-addr.arpa',
  119. '25.172.in-addr.arpa',
  120. '26.172.in-addr.arpa',
  121. '27.172.in-addr.arpa',
  122. '28.172.in-addr.arpa',
  123. '29.172.in-addr.arpa',
  124. '30.172.in-addr.arpa',
  125. '31.172.in-addr.arpa',
  126. '168.192.in-addr.arpa',
  127. '254.169.in-addr.arpa'
  128. ]
  129. },
  130. LAN_WITH_REALIP: {
  131. dns: 'system',
  132. hosts: {
  133. // localhost: ['127.0.0.1']
  134. },
  135. realip: true,
  136. ruleset: true,
  137. domains: [
  138. '+lan',
  139. '+local',
  140. '+internal',
  141. // 'amplifi.lan',
  142. // '$localhost',
  143. '+localdomain',
  144. 'home.arpa',
  145. '127.0.0.1.sslip.io',
  146. '127.atlas.skk.moe'
  147. ]
  148. }
  149. } as const satisfies Record<string, DNSMapping>;
  150. export const HOSTS = {
  151. HOSTS: {
  152. // not actually used, only for a placeholder
  153. dns: '',
  154. hosts: {
  155. 'cdn.jsdelivr.net': ['cdn.jsdelivr.net.cdn.cloudflare.net']
  156. },
  157. realip: false,
  158. ruleset: false,
  159. domains: [] as never[]
  160. }
  161. } as const satisfies Record<string, DNSMapping>;