surgio 3.11.2 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/bin/dev +0 -0
  2. package/package.json +69 -75
  3. package/build/base-command.d.ts +0 -20
  4. package/build/base-command.js +0 -75
  5. package/build/base-command.js.map +0 -1
  6. package/build/commands/check.d.ts +0 -10
  7. package/build/commands/check.js +0 -87
  8. package/build/commands/check.js.map +0 -1
  9. package/build/commands/clean-cache.d.ts +0 -6
  10. package/build/commands/clean-cache.js +0 -28
  11. package/build/commands/clean-cache.js.map +0 -1
  12. package/build/commands/doctor.d.ts +0 -6
  13. package/build/commands/doctor.js +0 -20
  14. package/build/commands/doctor.js.map +0 -1
  15. package/build/commands/generate.d.ts +0 -7
  16. package/build/commands/generate.js +0 -94
  17. package/build/commands/generate.js.map +0 -1
  18. package/build/commands/lint.d.ts +0 -6
  19. package/build/commands/lint.js +0 -37
  20. package/build/commands/lint.js.map +0 -1
  21. package/build/commands/new.d.ts +0 -6
  22. package/build/commands/new.js +0 -37
  23. package/build/commands/new.js.map +0 -1
  24. package/build/commands/subscriptions.d.ts +0 -7
  25. package/build/commands/subscriptions.js +0 -95
  26. package/build/commands/subscriptions.js.map +0 -1
  27. package/build/commands/upload.d.ts +0 -6
  28. package/build/commands/upload.js +0 -91
  29. package/build/commands/upload.js.map +0 -1
  30. package/build/config.d.ts +0 -6
  31. package/build/config.js +0 -156
  32. package/build/config.js.map +0 -1
  33. package/build/configurables.d.ts +0 -88
  34. package/build/configurables.js +0 -52
  35. package/build/configurables.js.map +0 -1
  36. package/build/constant/constant.d.ts +0 -36
  37. package/build/constant/constant.js +0 -160
  38. package/build/constant/constant.js.map +0 -1
  39. package/build/constant/env.d.ts +0 -9
  40. package/build/constant/env.js +0 -13
  41. package/build/constant/env.js.map +0 -1
  42. package/build/constant/error.d.ts +0 -1
  43. package/build/constant/error.js +0 -5
  44. package/build/constant/error.js.map +0 -1
  45. package/build/constant/index.d.ts +0 -3
  46. package/build/constant/index.js +0 -20
  47. package/build/constant/index.js.map +0 -1
  48. package/build/filters/classes.d.ts +0 -13
  49. package/build/filters/classes.js +0 -42
  50. package/build/filters/classes.js.map +0 -1
  51. package/build/filters/filters.d.ts +0 -25
  52. package/build/filters/filters.js +0 -107
  53. package/build/filters/filters.js.map +0 -1
  54. package/build/filters/index.d.ts +0 -2
  55. package/build/filters/index.js +0 -32
  56. package/build/filters/index.js.map +0 -1
  57. package/build/filters/utils.d.ts +0 -16
  58. package/build/filters/utils.js +0 -159
  59. package/build/filters/utils.js.map +0 -1
  60. package/build/generator/artifact.d.ts +0 -142
  61. package/build/generator/artifact.js +0 -370
  62. package/build/generator/artifact.js.map +0 -1
  63. package/build/generator/index.d.ts +0 -3
  64. package/build/generator/index.js +0 -25
  65. package/build/generator/index.js.map +0 -1
  66. package/build/generator/json-template.d.ts +0 -11
  67. package/build/generator/json-template.js +0 -66
  68. package/build/generator/json-template.js.map +0 -1
  69. package/build/generator/template.d.ts +0 -8
  70. package/build/generator/template.js +0 -234
  71. package/build/generator/template.js.map +0 -1
  72. package/build/hooks/init.d.ts +0 -3
  73. package/build/hooks/init.js +0 -33
  74. package/build/hooks/init.js.map +0 -1
  75. package/build/index.d.ts +0 -85
  76. package/build/index.js +0 -64
  77. package/build/index.js.map +0 -1
  78. package/build/internal.d.ts +0 -5
  79. package/build/internal.js +0 -25
  80. package/build/internal.js.map +0 -1
  81. package/build/misc/deprecation.d.ts +0 -0
  82. package/build/misc/deprecation.js +0 -2
  83. package/build/misc/deprecation.js.map +0 -1
  84. package/build/misc/flag_cn.d.ts +0 -56
  85. package/build/misc/flag_cn.js +0 -154
  86. package/build/misc/flag_cn.js.map +0 -1
  87. package/build/provider/BlackSSLProvider.d.ts +0 -11
  88. package/build/provider/BlackSSLProvider.js +0 -93
  89. package/build/provider/BlackSSLProvider.js.map +0 -1
  90. package/build/provider/ClashProvider.d.ts +0 -24
  91. package/build/provider/ClashProvider.js +0 -476
  92. package/build/provider/ClashProvider.js.map +0 -1
  93. package/build/provider/CustomProvider.d.ts +0 -10
  94. package/build/provider/CustomProvider.js +0 -144
  95. package/build/provider/CustomProvider.js.map +0 -1
  96. package/build/provider/Provider.d.ts +0 -17
  97. package/build/provider/Provider.js +0 -111
  98. package/build/provider/Provider.js.map +0 -1
  99. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +0 -11
  100. package/build/provider/ShadowsocksJsonSubscribeProvider.js +0 -86
  101. package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +0 -1
  102. package/build/provider/ShadowsocksSubscribeProvider.d.ts +0 -18
  103. package/build/provider/ShadowsocksSubscribeProvider.js +0 -84
  104. package/build/provider/ShadowsocksSubscribeProvider.js.map +0 -1
  105. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +0 -15
  106. package/build/provider/ShadowsocksrSubscribeProvider.js +0 -93
  107. package/build/provider/ShadowsocksrSubscribeProvider.js.map +0 -1
  108. package/build/provider/SsdProvider.d.ts +0 -39
  109. package/build/provider/SsdProvider.js +0 -138
  110. package/build/provider/SsdProvider.js.map +0 -1
  111. package/build/provider/TrojanProvider.d.ts +0 -24
  112. package/build/provider/TrojanProvider.js +0 -98
  113. package/build/provider/TrojanProvider.js.map +0 -1
  114. package/build/provider/V2rayNSubscribeProvider.d.ts +0 -25
  115. package/build/provider/V2rayNSubscribeProvider.js +0 -181
  116. package/build/provider/V2rayNSubscribeProvider.js.map +0 -1
  117. package/build/provider/index.d.ts +0 -17
  118. package/build/provider/index.js +0 -54
  119. package/build/provider/index.js.map +0 -1
  120. package/build/provider/types.d.ts +0 -18
  121. package/build/provider/types.js +0 -3
  122. package/build/provider/types.js.map +0 -1
  123. package/build/redis.d.ts +0 -9
  124. package/build/redis.js +0 -63
  125. package/build/redis.js.map +0 -1
  126. package/build/types.d.ts +0 -138
  127. package/build/types.js +0 -31
  128. package/build/types.js.map +0 -1
  129. package/build/utils/cache.d.ts +0 -23
  130. package/build/utils/cache.js +0 -98
  131. package/build/utils/cache.js.map +0 -1
  132. package/build/utils/clash.d.ts +0 -3
  133. package/build/utils/clash.js +0 -448
  134. package/build/utils/clash.js.map +0 -1
  135. package/build/utils/constant.d.ts +0 -1
  136. package/build/utils/constant.js +0 -19
  137. package/build/utils/constant.js.map +0 -1
  138. package/build/utils/dns.d.ts +0 -4
  139. package/build/utils/dns.js +0 -51
  140. package/build/utils/dns.js.map +0 -1
  141. package/build/utils/doctor.d.ts +0 -2
  142. package/build/utils/doctor.js +0 -38
  143. package/build/utils/doctor.js.map +0 -1
  144. package/build/utils/env-flag.d.ts +0 -9
  145. package/build/utils/env-flag.js +0 -41
  146. package/build/utils/env-flag.js.map +0 -1
  147. package/build/utils/error-helper.d.ts +0 -2
  148. package/build/utils/error-helper.js +0 -62
  149. package/build/utils/error-helper.js.map +0 -1
  150. package/build/utils/errors.d.ts +0 -19
  151. package/build/utils/errors.js +0 -60
  152. package/build/utils/errors.js.map +0 -1
  153. package/build/utils/flag.d.ts +0 -3
  154. package/build/utils/flag.js +0 -79
  155. package/build/utils/flag.js.map +0 -1
  156. package/build/utils/http-client.d.ts +0 -3
  157. package/build/utils/http-client.js +0 -82
  158. package/build/utils/http-client.js.map +0 -1
  159. package/build/utils/index.d.ts +0 -90
  160. package/build/utils/index.js +0 -529
  161. package/build/utils/index.js.map +0 -1
  162. package/build/utils/linter.d.ts +0 -4
  163. package/build/utils/linter.js +0 -49
  164. package/build/utils/linter.js.map +0 -1
  165. package/build/utils/loon.d.ts +0 -3
  166. package/build/utils/loon.js +0 -236
  167. package/build/utils/loon.js.map +0 -1
  168. package/build/utils/quantumult.d.ts +0 -6
  169. package/build/utils/quantumult.js +0 -240
  170. package/build/utils/quantumult.js.map +0 -1
  171. package/build/utils/relayable-url.d.ts +0 -1
  172. package/build/utils/relayable-url.js +0 -18
  173. package/build/utils/relayable-url.js.map +0 -1
  174. package/build/utils/remote-snippet.d.ts +0 -8
  175. package/build/utils/remote-snippet.js +0 -198
  176. package/build/utils/remote-snippet.js.map +0 -1
  177. package/build/utils/singbox.d.ts +0 -3
  178. package/build/utils/singbox.js +0 -377
  179. package/build/utils/singbox.js.map +0 -1
  180. package/build/utils/ss.d.ts +0 -3
  181. package/build/utils/ss.js +0 -97
  182. package/build/utils/ss.js.map +0 -1
  183. package/build/utils/ssr.d.ts +0 -7
  184. package/build/utils/ssr.js +0 -53
  185. package/build/utils/ssr.js.map +0 -1
  186. package/build/utils/subscription.d.ts +0 -11
  187. package/build/utils/subscription.js +0 -68
  188. package/build/utils/subscription.js.map +0 -1
  189. package/build/utils/surfboard.d.ts +0 -7
  190. package/build/utils/surfboard.js +0 -184
  191. package/build/utils/surfboard.js.map +0 -1
  192. package/build/utils/surge.d.ts +0 -8
  193. package/build/utils/surge.js +0 -407
  194. package/build/utils/surge.js.map +0 -1
  195. package/build/utils/time.d.ts +0 -1
  196. package/build/utils/time.js +0 -6
  197. package/build/utils/time.js.map +0 -1
  198. package/build/utils/tmp-helper.d.ts +0 -30
  199. package/build/utils/tmp-helper.js +0 -102
  200. package/build/utils/tmp-helper.js.map +0 -1
  201. package/build/utils/trojan.d.ts +0 -2
  202. package/build/utils/trojan.js +0 -38
  203. package/build/utils/trojan.js.map +0 -1
  204. package/build/utils/useragent.d.ts +0 -18
  205. package/build/utils/useragent.js +0 -210
  206. package/build/utils/useragent.js.map +0 -1
  207. package/build/validators/artifact.d.ts +0 -44
  208. package/build/validators/artifact.js +0 -26
  209. package/build/validators/artifact.js.map +0 -1
  210. package/build/validators/common.d.ts +0 -377
  211. package/build/validators/common.js +0 -106
  212. package/build/validators/common.js.map +0 -1
  213. package/build/validators/filter.d.ts +0 -10
  214. package/build/validators/filter.js +0 -15
  215. package/build/validators/filter.js.map +0 -1
  216. package/build/validators/hooks.d.ts +0 -9
  217. package/build/validators/hooks.js +0 -11
  218. package/build/validators/hooks.js.map +0 -1
  219. package/build/validators/http.d.ts +0 -366
  220. package/build/validators/http.js +0 -23
  221. package/build/validators/http.js.map +0 -1
  222. package/build/validators/hysteria2.d.ts +0 -196
  223. package/build/validators/hysteria2.js +0 -15
  224. package/build/validators/hysteria2.js.map +0 -1
  225. package/build/validators/index.d.ts +0 -17
  226. package/build/validators/index.js +0 -34
  227. package/build/validators/index.js.map +0 -1
  228. package/build/validators/provider.d.ts +0 -120
  229. package/build/validators/provider.js +0 -46
  230. package/build/validators/provider.js.map +0 -1
  231. package/build/validators/shadowsocks.d.ts +0 -252
  232. package/build/validators/shadowsocks.js +0 -31
  233. package/build/validators/shadowsocks.js.map +0 -1
  234. package/build/validators/shadowsocksr.d.ts +0 -184
  235. package/build/validators/shadowsocksr.js +0 -19
  236. package/build/validators/shadowsocksr.js.map +0 -1
  237. package/build/validators/snell.d.ts +0 -178
  238. package/build/validators/snell.js +0 -17
  239. package/build/validators/snell.js.map +0 -1
  240. package/build/validators/socks5.d.ts +0 -196
  241. package/build/validators/socks5.js +0 -15
  242. package/build/validators/socks5.js.map +0 -1
  243. package/build/validators/surgio-config.d.ts +0 -387
  244. package/build/validators/surgio-config.js +0 -101
  245. package/build/validators/surgio-config.js.map +0 -1
  246. package/build/validators/trojan.d.ts +0 -255
  247. package/build/validators/trojan.js +0 -16
  248. package/build/validators/trojan.js.map +0 -1
  249. package/build/validators/tuic.d.ts +0 -741
  250. package/build/validators/tuic.js +0 -21
  251. package/build/validators/tuic.js.map +0 -1
  252. package/build/validators/vless.d.ts +0 -389
  253. package/build/validators/vless.js +0 -31
  254. package/build/validators/vless.js.map +0 -1
  255. package/build/validators/vmess.d.ts +0 -425
  256. package/build/validators/vmess.js +0 -86
  257. package/build/validators/vmess.js.map +0 -1
  258. package/build/validators/wireguard.d.ts +0 -230
  259. package/build/validators/wireguard.js +0 -26
  260. package/build/validators/wireguard.js.map +0 -1
@@ -1,407 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSurgeNodeNames = exports.getSurgeWireguardNodes = exports.getSurgeNodes = exports.getSurgeExtendHeaders = void 0;
4
- const logger_1 = require("@surgio/logger");
5
- const constant_1 = require("../constant");
6
- const types_1 = require("../types");
7
- const filters_1 = require("../filters");
8
- const _1 = require("./");
9
- const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:surge' });
10
- const getSurgeExtendHeaders = (headers) => {
11
- return Object.keys(headers)
12
- .map((headerKey) => `${headerKey.toLowerCase()}:${headers[headerKey]}`)
13
- .join('|');
14
- };
15
- exports.getSurgeExtendHeaders = getSurgeExtendHeaders;
16
- /**
17
- * @see https://manual.nssurge.com/policy/proxy.html
18
- */
19
- const getSurgeNodes = function (nodeList, filter) {
20
- const result = (0, filters_1.applyFilter)(nodeList, filter)
21
- .map((nodeConfig) => {
22
- const result = nodeListMapper(nodeConfig);
23
- if (!result) {
24
- return undefined;
25
- }
26
- const [nodeName, nodeConfigString] = result;
27
- return [nodeName, appendCommonConfig(nodeConfigString, nodeConfig)];
28
- })
29
- .filter((item) => item !== undefined)
30
- .map((item) => item[1]);
31
- return result.join('\n');
32
- };
33
- exports.getSurgeNodes = getSurgeNodes;
34
- const getSurgeWireguardNodes = (nodeList) => {
35
- const result = nodeList
36
- .map((nodeConfig) => {
37
- if (nodeConfig.type !== types_1.NodeTypeEnum.Wireguard ||
38
- nodeConfig.enable === false) {
39
- return undefined;
40
- }
41
- const nodeConfigSection = [
42
- `[WireGuard ${nodeConfig.nodeName}]`,
43
- `self-ip=${nodeConfig.selfIp}`,
44
- `private-key=${nodeConfig.privateKey}`,
45
- ];
46
- const optionalKeys = [
47
- 'mtu',
48
- 'preferIpv6',
49
- 'selfIpV6',
50
- ];
51
- for (const key of optionalKeys) {
52
- if (nodeConfig[key] !== undefined) {
53
- nodeConfigSection.push(...(0, _1.pickAndFormatStringList)(nodeConfig, [key], {
54
- keyFormat: 'kebabCase',
55
- }));
56
- }
57
- }
58
- if (nodeConfig.dnsServers) {
59
- nodeConfigSection.push(`dns-server=${JSON.stringify(nodeConfig.dnsServers.join(', '))}`);
60
- }
61
- const peerList = [];
62
- for (const peer of nodeConfig.peers) {
63
- const peerConfig = [
64
- `endpoint=${peer.endpoint}`,
65
- `public-key=${JSON.stringify(peer.publicKey)}`,
66
- ];
67
- const optionalPeerConfigKeys = [
68
- 'presharedKey',
69
- 'allowedIps',
70
- 'keepalive',
71
- ];
72
- for (const key of optionalPeerConfigKeys) {
73
- if (peer[key] !== undefined) {
74
- peerConfig.push(...(0, _1.pickAndFormatStringList)(peer, [key], {
75
- keyFormat: 'kebabCase',
76
- stringifyValue: true,
77
- }));
78
- }
79
- }
80
- // istanbul ignore next
81
- if (peer.reservedBits) {
82
- peerConfig.push(`client-id=${peer.reservedBits.join('/')}`);
83
- }
84
- peerList.push(`(${peerConfig.join(', ')})`);
85
- }
86
- nodeConfigSection.push(`peer=${peerList.join(', ')}`);
87
- return nodeConfigSection.join('\n');
88
- })
89
- .filter((item) => item !== undefined);
90
- return result.join('\n\n');
91
- };
92
- exports.getSurgeWireguardNodes = getSurgeWireguardNodes;
93
- const getSurgeNodeNames = function (nodeList, filter) {
94
- const result = (0, filters_1.applyFilter)(nodeList, filter)
95
- .map(nodeListMapper)
96
- .filter((item) => item !== undefined)
97
- .map((item) => item[0]);
98
- return result.join(', ');
99
- };
100
- exports.getSurgeNodeNames = getSurgeNodeNames;
101
- function nodeListMapper(nodeConfig) {
102
- switch (nodeConfig.type) {
103
- case types_1.NodeTypeEnum.Shadowsocks: {
104
- if (nodeConfig.obfs && ['ws', 'wss'].includes(nodeConfig.obfs)) {
105
- logger.warn(`不支持为 Surge 生成 v2ray-plugin 的 Shadowsocks 节点,节点 ${nodeConfig.nodeName} 会被省略`);
106
- return void 0;
107
- }
108
- return [
109
- nodeConfig.nodeName,
110
- [
111
- nodeConfig.nodeName,
112
- [
113
- 'ss',
114
- nodeConfig.hostname,
115
- nodeConfig.port,
116
- 'encrypt-method=' + nodeConfig.method,
117
- ...(0, _1.pickAndFormatStringList)(nodeConfig, ['password', 'udpRelay', 'obfs', 'obfsHost'], {
118
- keyFormat: 'kebabCase',
119
- }),
120
- ].join(', '),
121
- ].join(' = '),
122
- ];
123
- }
124
- case types_1.NodeTypeEnum.HTTPS: {
125
- return [
126
- nodeConfig.nodeName,
127
- [
128
- nodeConfig.nodeName,
129
- [
130
- 'https',
131
- nodeConfig.hostname,
132
- nodeConfig.port,
133
- nodeConfig.username /* istanbul ignore next */ || '',
134
- nodeConfig.password /* istanbul ignore next */ || '',
135
- ].join(', '),
136
- ].join(' = '),
137
- ];
138
- }
139
- case types_1.NodeTypeEnum.HTTP: {
140
- return [
141
- nodeConfig.nodeName,
142
- [
143
- nodeConfig.nodeName,
144
- [
145
- 'http',
146
- nodeConfig.hostname,
147
- nodeConfig.port,
148
- nodeConfig.username /* istanbul ignore next */ || '',
149
- nodeConfig.password /* istanbul ignore next */ || '',
150
- ].join(', '),
151
- ].join(' = '),
152
- ];
153
- }
154
- case types_1.NodeTypeEnum.Snell: {
155
- return [
156
- nodeConfig.nodeName,
157
- [
158
- nodeConfig.nodeName,
159
- [
160
- 'snell',
161
- nodeConfig.hostname,
162
- nodeConfig.port,
163
- ...(0, _1.pickAndFormatStringList)(nodeConfig, ['psk', 'obfs', 'obfsHost', 'version', 'reuse'], {
164
- keyFormat: 'kebabCase',
165
- }),
166
- ].join(', '),
167
- ].join(' = '),
168
- ];
169
- }
170
- case types_1.NodeTypeEnum.Shadowsocksr: {
171
- // istanbul ignore next
172
- if (!nodeConfig.binPath) {
173
- throw new Error('请按照文档 https://url.royli.dev/vdGh2 添加 Shadowsocksr 二进制文件路径');
174
- }
175
- const args = [
176
- '-s',
177
- nodeConfig.hostname,
178
- '-p',
179
- `${nodeConfig.port}`,
180
- '-m',
181
- nodeConfig.method,
182
- '-o',
183
- nodeConfig.obfs,
184
- '-O',
185
- nodeConfig.protocol,
186
- '-k',
187
- nodeConfig.password,
188
- '-l',
189
- `${nodeConfig.localPort}`,
190
- '-b',
191
- '127.0.0.1',
192
- ];
193
- if (nodeConfig.protoparam) {
194
- args.push('-G', nodeConfig.protoparam);
195
- }
196
- if (nodeConfig.obfsparam) {
197
- args.push('-g', nodeConfig.obfsparam);
198
- }
199
- const nodeConfigString = [
200
- 'external',
201
- `exec = ${JSON.stringify(nodeConfig.binPath)}`,
202
- ...args.map((arg) => `args = ${JSON.stringify(arg)}`),
203
- `local-port = ${nodeConfig.localPort}`,
204
- ];
205
- if (nodeConfig.localPort === 0) {
206
- throw new Error(`为 Surge 生成 SSR 配置时必须为 Provider ${nodeConfig.provider?.name} 设置 startPort,参考 https://url.royli.dev/bWcpe`);
207
- }
208
- if (nodeConfig?.surgeConfig?.resolveHostname &&
209
- nodeConfig.hostnameIp &&
210
- nodeConfig.hostnameIp.length) {
211
- nodeConfigString.push(...nodeConfig.hostnameIp.map((item) => `addresses = ${item}`));
212
- }
213
- if ((0, _1.isIp)(nodeConfig.hostname)) {
214
- nodeConfigString.push(`addresses = ${nodeConfig.hostname}`);
215
- }
216
- return [
217
- nodeConfig.nodeName,
218
- [nodeConfig.nodeName, nodeConfigString.join(', ')].join(' = '),
219
- ];
220
- }
221
- case types_1.NodeTypeEnum.Vmess: {
222
- if (!constant_1.SURGE_SUPPORTED_VMESS_NETWORK.includes(nodeConfig.network)) {
223
- logger.warn(`Surge 不支持 Vmess ${nodeConfig.network} 节点,节点 ${nodeConfig.nodeName} 会被省略`);
224
- return undefined;
225
- }
226
- const result = [
227
- 'vmess',
228
- nodeConfig.hostname,
229
- nodeConfig.port,
230
- `username=${nodeConfig.uuid}`,
231
- ];
232
- if (['chacha20-poly1305', 'aes-128-gcm'].includes(nodeConfig.method)) {
233
- if (nodeConfig.method === 'chacha20-poly1305') {
234
- result.push(`encrypt-method=chacha20-ietf-poly1305`);
235
- }
236
- else {
237
- result.push(`encrypt-method=${nodeConfig.method}`);
238
- }
239
- }
240
- if (nodeConfig.network === 'ws') {
241
- result.push('ws=true');
242
- result.push(`ws-path=${nodeConfig.wsOpts?.path || '/'}`);
243
- result.push('ws-headers=' +
244
- JSON.stringify((0, exports.getSurgeExtendHeaders)({
245
- 'user-agent': constant_1.OBFS_UA,
246
- ...nodeConfig.wsOpts?.headers,
247
- })));
248
- }
249
- if (nodeConfig.tls) {
250
- result.push('tls=true');
251
- }
252
- if (nodeConfig?.surgeConfig?.vmessAEAD) {
253
- result.push('vmess-aead=true');
254
- }
255
- else {
256
- result.push('vmess-aead=false');
257
- }
258
- return [
259
- nodeConfig.nodeName,
260
- [nodeConfig.nodeName, result.join(', ')].join(' = '),
261
- ];
262
- }
263
- case types_1.NodeTypeEnum.Trojan: {
264
- const result = [
265
- 'trojan',
266
- nodeConfig.hostname,
267
- `${nodeConfig.port}`,
268
- `password=${nodeConfig.password}`,
269
- ];
270
- if (nodeConfig.network === 'ws') {
271
- result.push('ws=true');
272
- result.push(`ws-path=${nodeConfig.wsPath}`);
273
- if (nodeConfig.wsHeaders) {
274
- result.push('ws-headers=' +
275
- JSON.stringify((0, exports.getSurgeExtendHeaders)(nodeConfig.wsHeaders)));
276
- }
277
- }
278
- return [
279
- nodeConfig.nodeName,
280
- [nodeConfig.nodeName, result.join(', ')].join(' = '),
281
- ];
282
- }
283
- case types_1.NodeTypeEnum.Socks5: {
284
- const result = [
285
- nodeConfig.tls === true ? 'socks5-tls' : 'socks5',
286
- nodeConfig.hostname,
287
- nodeConfig.port,
288
- ...(0, _1.pickAndFormatStringList)(nodeConfig, ['username', 'password', 'udpRelay'], {
289
- keyFormat: 'kebabCase',
290
- }),
291
- ];
292
- if (nodeConfig.tls === true) {
293
- result.push(...(typeof nodeConfig.clientCert === 'string'
294
- ? [`client-cert=${nodeConfig.clientCert}`]
295
- : []));
296
- }
297
- return [
298
- nodeConfig.nodeName,
299
- [nodeConfig.nodeName, result.join(', ')].join(' = '),
300
- ];
301
- }
302
- case types_1.NodeTypeEnum.Tuic: {
303
- if ('version' in nodeConfig && Number(nodeConfig.version) === 5) {
304
- const result = [
305
- 'tuic-v5',
306
- nodeConfig.hostname,
307
- nodeConfig.port,
308
- ...(0, _1.pickAndFormatStringList)(nodeConfig, ['password', 'uuid'], {
309
- keyFormat: 'kebabCase',
310
- }),
311
- ];
312
- return [
313
- nodeConfig.nodeName,
314
- [nodeConfig.nodeName, result.join(', ')].join(' = '),
315
- ];
316
- }
317
- const result = [
318
- 'tuic',
319
- nodeConfig.hostname,
320
- nodeConfig.port,
321
- ...(0, _1.pickAndFormatStringList)(nodeConfig, ['token'], {
322
- keyFormat: 'kebabCase',
323
- }),
324
- ];
325
- return [
326
- nodeConfig.nodeName,
327
- [nodeConfig.nodeName, result.join(', ')].join(' = '),
328
- ];
329
- }
330
- case types_1.NodeTypeEnum.Hysteria2:
331
- // istanbul ignore next
332
- if (nodeConfig.uploadBandwidth) {
333
- logger.info(`Surge 不支持为 Hysteria2 节点配置 uploadBandwidth,节点 ${nodeConfig.nodeName} 将不包含此字段`);
334
- }
335
- // istanbul ignore next
336
- if (nodeConfig.obfs) {
337
- logger.warn(`Surge 不支持为 Hysteria2 节点配置 obfs,节点 ${nodeConfig.nodeName} 将被忽略`);
338
- return undefined;
339
- }
340
- return [
341
- nodeConfig.nodeName,
342
- [
343
- `${nodeConfig.nodeName} = hysteria2`,
344
- nodeConfig.hostname,
345
- nodeConfig.port,
346
- ...(0, _1.pickAndFormatStringList)(nodeConfig, ['password', 'downloadBandwidth'], {
347
- keyFormat: 'kebabCase',
348
- }),
349
- ].join(', '),
350
- ];
351
- case types_1.NodeTypeEnum.Wireguard:
352
- logger.info(`请配合使用 getSurgeWireguardNodes 生成 ${nodeConfig.nodeName} 节点配置`);
353
- return [
354
- nodeConfig.nodeName,
355
- [
356
- `${nodeConfig.nodeName} = wireguard`,
357
- `section-name = ${nodeConfig.nodeName}`,
358
- ].join(', '),
359
- ];
360
- // istanbul ignore next
361
- default:
362
- logger.warn(`不支持为 Surge 生成 ${nodeConfig.type} 的节点,节点 ${nodeConfig.nodeName} 会被省略`);
363
- return undefined;
364
- }
365
- }
366
- function appendCommonConfig(original, nodeConfig) {
367
- const appendConfig = [
368
- ...(0, _1.pickAndFormatStringList)(nodeConfig, [
369
- 'tfo',
370
- 'mptcp',
371
- 'ecn',
372
- 'underlyingProxy',
373
- 'testUrl',
374
- 'testTimeout',
375
- 'tls13',
376
- 'skipCertVerify',
377
- 'sni',
378
- 'serverCertFingerprintSha256',
379
- 'blockQuic',
380
- 'portHopping',
381
- 'portHoppingInterval',
382
- ], {
383
- keyFormat: 'kebabCase',
384
- }),
385
- ...parseShadowTlsConfig(nodeConfig),
386
- ];
387
- if (nodeConfig.type === types_1.NodeTypeEnum.Tuic) {
388
- appendConfig.push(...('alpn' in nodeConfig && Array.isArray(nodeConfig.alpn)
389
- ? [`alpn=${nodeConfig.alpn.join(',')}`]
390
- : []));
391
- }
392
- if (!appendConfig.length) {
393
- return original;
394
- }
395
- return original + ', ' + appendConfig.join(', ');
396
- }
397
- function parseShadowTlsConfig(nodeConfig) {
398
- const result = [];
399
- if (nodeConfig.shadowTls) {
400
- result.push(`shadow-tls-password=${nodeConfig.shadowTls.password}`, `shadow-tls-sni=${nodeConfig.shadowTls.sni}`);
401
- if (nodeConfig.shadowTls.version) {
402
- result.push(`shadow-tls-version=${nodeConfig.shadowTls.version}`);
403
- }
404
- }
405
- return result;
406
- }
407
- //# sourceMappingURL=surge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"surge.js","sourceRoot":"","sources":["../../src/utils/surge.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const msToSeconds: (ms: number) => number;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.msToSeconds = void 0;
4
- const msToSeconds = (ms) => Math.floor(ms / 1000);
5
- exports.msToSeconds = msToSeconds;
6
- //# sourceMappingURL=time.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;AAA3D,QAAA,WAAW,eAAgD"}
@@ -1,30 +0,0 @@
1
- declare abstract class TmpHelper {
2
- cacheKey: string;
3
- maxAge?: number | undefined;
4
- protected constructor(cacheKey: string, maxAge?: number | undefined);
5
- abstract setContent(content: string): Promise<void>;
6
- abstract getContent(): Promise<string | undefined>;
7
- }
8
- export declare class TmpFile implements TmpHelper {
9
- cacheKey: string;
10
- maxAge?: number | undefined;
11
- constructor(cacheKey: string, maxAge?: number | undefined);
12
- setContent(content: string): Promise<void>;
13
- getContent(): Promise<string | undefined>;
14
- private validateContent;
15
- }
16
- export declare class TmpRedis implements TmpHelper {
17
- cacheKey: string;
18
- maxAge?: number | undefined;
19
- private redisClient;
20
- constructor(cacheKey: string, maxAge?: number | undefined);
21
- getContent(): Promise<string | undefined>;
22
- setContent(content: string): Promise<void>;
23
- }
24
- export interface TmpContent {
25
- readonly content: string;
26
- readonly lastEditTime: number;
27
- readonly maxAge?: number;
28
- }
29
- export declare const createTmpFactory: (baseDir: string, cacheType?: 'default' | 'redis') => (filePath: string, maxAge?: number) => TmpFile | TmpRedis;
30
- export {};
@@ -1,102 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createTmpFactory = exports.TmpRedis = exports.TmpFile = void 0;
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
9
- const logger_1 = require("@surgio/logger");
10
- const fs_extra_1 = __importDefault(require("fs-extra"));
11
- const constant_1 = require("../constant");
12
- const redis_1 = __importDefault(require("../redis"));
13
- const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:tmp-helper' });
14
- const tmpDir = path_1.default.join(os_1.default.tmpdir(), constant_1.TMP_FOLDER_NAME);
15
- class TmpHelper {
16
- cacheKey;
17
- maxAge;
18
- constructor(cacheKey, maxAge) {
19
- this.cacheKey = cacheKey;
20
- this.maxAge = maxAge;
21
- }
22
- }
23
- class TmpFile {
24
- cacheKey;
25
- maxAge;
26
- constructor(cacheKey, maxAge) {
27
- this.cacheKey = cacheKey;
28
- this.maxAge = maxAge;
29
- fs_extra_1.default.accessSync(path_1.default.dirname(this.cacheKey), fs_extra_1.default.constants.W_OK);
30
- }
31
- async setContent(content) {
32
- await fs_extra_1.default.writeJson(this.cacheKey, {
33
- content,
34
- maxAge: this.maxAge,
35
- lastEditTime: new Date().getTime(),
36
- });
37
- }
38
- async getContent() {
39
- const tmpContent = await this.validateContent();
40
- if (tmpContent) {
41
- return tmpContent.content;
42
- }
43
- return undefined;
44
- }
45
- async validateContent() {
46
- if (!fs_extra_1.default.existsSync(this.cacheKey)) {
47
- return undefined;
48
- }
49
- const tmpContent = await fs_extra_1.default.readJson(this.cacheKey);
50
- const now = Date.now();
51
- if (!tmpContent.maxAge) {
52
- return tmpContent;
53
- }
54
- else if (this.maxAge && now - tmpContent.lastEditTime < this.maxAge) {
55
- return tmpContent;
56
- }
57
- else if (!this.maxAge && tmpContent.maxAge) {
58
- this.maxAge = tmpContent.maxAge;
59
- }
60
- return undefined;
61
- }
62
- }
63
- exports.TmpFile = TmpFile;
64
- class TmpRedis {
65
- cacheKey;
66
- maxAge;
67
- redisClient;
68
- constructor(cacheKey, maxAge) {
69
- this.cacheKey = cacheKey;
70
- this.maxAge = maxAge;
71
- this.redisClient = redis_1.default.getRedis();
72
- }
73
- async getContent() {
74
- const value = await this.redisClient.get(this.cacheKey);
75
- return value ? value : undefined;
76
- }
77
- async setContent(content) {
78
- if (this.maxAge) {
79
- await this.redisClient.set(this.cacheKey, content, 'PX', this.maxAge);
80
- }
81
- else {
82
- await this.redisClient.set(this.cacheKey, content);
83
- }
84
- }
85
- }
86
- exports.TmpRedis = TmpRedis;
87
- const createTmpFactory = (baseDir, cacheType = 'default') => {
88
- logger.debug('tmpDir: %s', baseDir);
89
- logger.debug('tmpDir cache type: %s', cacheType);
90
- if (cacheType === 'default') {
91
- const fullTmpDir = path_1.default.join(tmpDir, baseDir);
92
- if (!fs_extra_1.default.existsSync(fullTmpDir)) {
93
- fs_extra_1.default.mkdirpSync(fullTmpDir);
94
- }
95
- return (fileCacheKey, maxAge) => new TmpFile(path_1.default.join(fullTmpDir, fileCacheKey), maxAge);
96
- }
97
- else {
98
- return (fileCacheKey, maxAge) => new TmpRedis(`${baseDir}:${fileCacheKey}`, maxAge);
99
- }
100
- };
101
- exports.createTmpFactory = createTmpFactory;
102
- //# sourceMappingURL=tmp-helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmp-helper.js","sourceRoot":"","sources":["../../src/utils/tmp-helper.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { TrojanNodeConfig } from '../types';
2
- export declare const parseTrojanUri: (str: string) => TrojanNodeConfig;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseTrojanUri = void 0;
4
- const url_1 = require("url");
5
- const logger_1 = require("@surgio/logger");
6
- const types_1 = require("../types");
7
- const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:trojan' });
8
- const parseTrojanUri = (str) => {
9
- logger.debug('Trojan URI', str);
10
- const scheme = new url_1.URL(str);
11
- if (scheme.protocol !== 'trojan:') {
12
- throw new Error('Invalid Trojan URI.');
13
- }
14
- const allowInsecure = scheme.searchParams.get('allowInsecure') === '1' ||
15
- scheme.searchParams.get('allowInsecure') === 'true';
16
- const sni = scheme.searchParams.get('sni') || scheme.searchParams.get('peer');
17
- return {
18
- type: types_1.NodeTypeEnum.Trojan,
19
- hostname: scheme.hostname,
20
- port: scheme.port,
21
- password: scheme.username,
22
- nodeName: scheme.hash
23
- ? decodeURIComponent(scheme.hash.slice(1))
24
- : `${scheme.hostname}:${scheme.port}`,
25
- ...(allowInsecure
26
- ? {
27
- skipCertVerify: true,
28
- }
29
- : null),
30
- ...(sni
31
- ? {
32
- sni,
33
- }
34
- : null),
35
- };
36
- };
37
- exports.parseTrojanUri = parseTrojanUri;
38
- //# sourceMappingURL=trojan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trojan.js","sourceRoot":"","sources":["../../src/utils/trojan.ts"],"names":[],"mappings":";;;AAAA,6BAAyB;AACzB,2CAA6C;AAE7C,oCAAyD;AAEzD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;AAExD,MAAM,cAAc,GAAG,CAAC,GAAW,EAAoB,EAAE;IAC9D,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IAE/B,MAAM,MAAM,GAAG,IAAI,SAAG,CAAC,GAAG,CAAC,CAAA;IAE3B,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,aAAa,GACjB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG;QAChD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,MAAM,CAAA;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAE7E,OAAO;QACL,IAAI,EAAE,oBAAY,CAAC,MAAM;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,IAAI;YACnB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;QACvC,GAAG,CAAC,aAAa;YACf,CAAC,CAAC;gBACE,cAAc,EAAE,IAAI;aACrB;YACH,CAAC,CAAC,IAAI,CAAC;QACT,GAAG,CAAC,GAAG;YACL,CAAC,CAAC;gBACE,GAAG;aACJ;YACH,CAAC,CAAC,IAAI,CAAC;KACV,CAAA;AACH,CAAC,CAAA;AAjCY,QAAA,cAAc,kBAiC1B"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Exapmle:
3
- * isSurge('Surge iOS/2920')
4
- * isSurge('Surge/1129 CFNetwork/1335.0.3.2 Darwin/21.6.0')
5
- */
6
- export declare const isSurgeIOS: (ua: string | undefined, version?: string) => boolean;
7
- /**
8
- * Exapmle:
9
- * isSurge('Surge Mac/2408')
10
- */
11
- export declare const isSurgeMac: (ua: string | undefined, version?: string) => boolean;
12
- export declare const isClash: (ua: string | undefined, version?: string) => boolean;
13
- export declare const isClashVerge: (ua: string | undefined, version?: string) => boolean;
14
- export declare const isClashMetaForAndroid: (ua: string | undefined, version?: string) => boolean;
15
- export declare const isStash: (ua: string | undefined, version?: string) => boolean;
16
- export declare const isQuantumultX: (ua: string | undefined, version?: string) => boolean;
17
- export declare const isShadowrocket: (ua: string | undefined, version?: string) => boolean;
18
- export declare const isLoon: (ua: string | undefined, version?: string) => boolean;