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,198 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.loadRemoteSnippetList = exports.renderSurgioSnippet = exports.addProxyToSurgeRuleSet = exports.parseMacro = void 0;
30
- const bluebird_1 = __importDefault(require("bluebird"));
31
- const logger_1 = require("@surgio/logger");
32
- const detect_newline_1 = __importDefault(require("detect-newline"));
33
- const ms_1 = __importDefault(require("ms"));
34
- const nunjucks_1 = __importDefault(require("nunjucks"));
35
- const babelParser = __importStar(require("@babel/parser"));
36
- const constant_1 = require("../constant");
37
- const cache_1 = require("./cache");
38
- const env_flag_1 = require("./env-flag");
39
- const http_client_1 = __importDefault(require("./http-client"));
40
- const tmp_helper_1 = require("./tmp-helper");
41
- const index_1 = require("./index");
42
- const parseMacro = (snippet) => {
43
- const regex = /{%\s?macro(.*)\s?%}/gm;
44
- const match = regex.exec(snippet);
45
- if (!match) {
46
- throw new Error('该片段不包含可用的宏');
47
- }
48
- const ast = babelParser.parse(match[1], {});
49
- let statement;
50
- if (ast.errors.length) {
51
- throw new Error('该片段不包含可用的宏');
52
- }
53
- for (const node of ast.program.body) {
54
- if (node.type === 'ExpressionStatement') {
55
- statement = node;
56
- break;
57
- }
58
- }
59
- if (statement &&
60
- statement.expression.type === 'CallExpression' &&
61
- 'name' in statement.expression.callee &&
62
- statement.expression.callee.name === 'main') {
63
- return {
64
- functionName: statement.expression.callee.name,
65
- arguments: statement.expression.arguments.map((item) => {
66
- if (item.type === 'Identifier') {
67
- return item.name;
68
- }
69
- else {
70
- throw new Error('该片段不包含可用的宏');
71
- }
72
- }),
73
- };
74
- }
75
- throw new Error('该片段不包含可用的宏');
76
- };
77
- exports.parseMacro = parseMacro;
78
- const addProxyToSurgeRuleSet = (str, proxyName) => {
79
- if (!proxyName) {
80
- throw new Error('必须为片段指定一个策略');
81
- }
82
- const eol = (0, detect_newline_1.default)(str) || '\n';
83
- return str
84
- .split(eol)
85
- .map((item) => {
86
- if (item.trim() === '' || item.startsWith('#') || item.startsWith('//')) {
87
- return item;
88
- }
89
- const rule = item.split(',');
90
- switch (rule[0].trim().toUpperCase()) {
91
- case 'URL-REGEX':
92
- case 'AND':
93
- case 'OR':
94
- case 'NOT':
95
- return `${item},${proxyName}`;
96
- case 'IP-CIDR':
97
- case 'IP-CIDR6':
98
- case 'IP-ASN':
99
- case 'GEOIP':
100
- rule.splice(2, 0, proxyName);
101
- return rule.join(',');
102
- default:
103
- if (rule[rule.length - 1].includes('#') ||
104
- rule[rule.length - 1].includes('//')) {
105
- rule[rule.length - 1] = rule[rule.length - 1]
106
- .replace(/(#|\/\/)(.*)/, '')
107
- .trim();
108
- }
109
- return [...rule, proxyName].join(',');
110
- }
111
- })
112
- .join(eol);
113
- };
114
- exports.addProxyToSurgeRuleSet = addProxyToSurgeRuleSet;
115
- const renderSurgioSnippet = (str, args) => {
116
- const macro = (0, exports.parseMacro)(str);
117
- macro.arguments.forEach((key, index) => {
118
- if (typeof args[index] === 'undefined') {
119
- throw new Error('Surgio 片段参数不足,缺少 ' + key);
120
- }
121
- else if (typeof args[index] !== 'string') {
122
- throw new Error(`Surgio 片段参数 ${key} 不为字符串`);
123
- }
124
- });
125
- const template = [
126
- `${str}`,
127
- `{{ main(${args.map((item) => JSON.stringify(item)).join(',')}) }}`,
128
- ].join('\n');
129
- return nunjucks_1.default.renderString(template, {}).trim();
130
- };
131
- exports.renderSurgioSnippet = renderSurgioSnippet;
132
- const loadRemoteSnippetList = async (remoteSnippetList, cacheSnippet = true) => {
133
- const cacheType = await cache_1.unifiedCache.getType();
134
- const useLocalFile = cacheSnippet && cacheType === 'default';
135
- function load(url) {
136
- return http_client_1.default
137
- .get(url)
138
- .then((data) => {
139
- logger_1.logger.info(`远程片段下载成功: ${url}`);
140
- return data.body;
141
- })
142
- .catch((err) => {
143
- logger_1.logger.error(`远程片段下载失败: ${url}`);
144
- throw err;
145
- });
146
- }
147
- return bluebird_1.default.map(remoteSnippetList, async (item) => {
148
- const fileMd5 = (0, index_1.toMD5)(item.url);
149
- const isSurgioSnippet = item.surgioSnippet;
150
- if (useLocalFile) {
151
- const tmpFactory = (0, tmp_helper_1.createTmpFactory)(constant_1.CACHE_KEYS.RemoteSnippets, 'default');
152
- const tmp = tmpFactory(fileMd5, (0, env_flag_1.getRemoteSnippetCacheMaxage)());
153
- const tmpContent = await tmp.getContent();
154
- let snippet;
155
- if (tmpContent) {
156
- snippet = tmpContent;
157
- }
158
- else {
159
- snippet = await load(item.url);
160
- await tmp.setContent(snippet);
161
- }
162
- return {
163
- main: (...args) => isSurgioSnippet
164
- ? (0, exports.renderSurgioSnippet)(snippet, args)
165
- : (0, exports.addProxyToSurgeRuleSet)(snippet, args[0]),
166
- name: item.name,
167
- url: item.url,
168
- text: snippet, // 原始内容
169
- };
170
- }
171
- else {
172
- const cacheKey = `${constant_1.CACHE_KEYS.RemoteSnippets}:${fileMd5}`;
173
- const cachedSnippet = await cache_1.unifiedCache.get(cacheKey);
174
- const snippet = cachedSnippet
175
- ? cachedSnippet
176
- : await load(item.url)
177
- .then((res) => {
178
- return Promise.all([
179
- cache_1.unifiedCache.set(cacheKey, res, cacheSnippet ? (0, env_flag_1.getRemoteSnippetCacheMaxage)() : (0, ms_1.default)('1m')),
180
- res,
181
- ]);
182
- })
183
- .then(([, res]) => res);
184
- return {
185
- main: (...args) => isSurgioSnippet
186
- ? (0, exports.renderSurgioSnippet)(snippet, args)
187
- : (0, exports.addProxyToSurgeRuleSet)(snippet, args[0]),
188
- name: item.name,
189
- url: item.url,
190
- text: snippet, // 原始内容
191
- };
192
- }
193
- }, {
194
- concurrency: (0, env_flag_1.getNetworkConcurrency)(),
195
- });
196
- };
197
- exports.loadRemoteSnippetList = loadRemoteSnippetList;
198
- //# sourceMappingURL=remote-snippet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-snippet.js","sourceRoot":"","sources":["../../src/utils/remote-snippet.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { NodeFilterType, PossibleNodeConfigType, SortedNodeFilterType } from '../types';
2
- export declare const getSingboxNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => Record<string, any>[];
3
- export declare const getSingboxNodeNames: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: NodeFilterType | SortedNodeFilterType) => ReadonlyArray<string>;
@@ -1,377 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSingboxNodeNames = exports.getSingboxNodes = 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 validators_1 = require("../validators");
9
- const ss_1 = require("./ss");
10
- const _1 = require("./");
11
- const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:singbox' });
12
- const getSingboxNodes = function (list, filter) {
13
- return (0, filters_1.applyFilter)(list, filter)
14
- .flatMap(nodeListMapper)
15
- .filter((item) => (0, _1.checkNotNullish)(item));
16
- };
17
- exports.getSingboxNodes = getSingboxNodes;
18
- const getSingboxNodeNames = function (list, filter) {
19
- // istanbul ignore next
20
- if (arguments.length === 2 && typeof filter === 'undefined') {
21
- throw new Error(constant_1.ERR_INVALID_FILTER);
22
- }
23
- return (0, exports.getSingboxNodes)(list, filter).map((item) => item.tag);
24
- };
25
- exports.getSingboxNodeNames = getSingboxNodeNames;
26
- const typeMap = {
27
- [types_1.NodeTypeEnum.HTTP]: 'http',
28
- [types_1.NodeTypeEnum.HTTPS]: 'http',
29
- [types_1.NodeTypeEnum.Shadowsocks]: 'shadowsocks',
30
- [types_1.NodeTypeEnum.Vmess]: 'vmess',
31
- [types_1.NodeTypeEnum.Vless]: 'vless',
32
- [types_1.NodeTypeEnum.Trojan]: 'trojan',
33
- [types_1.NodeTypeEnum.Socks5]: 'socks',
34
- [types_1.NodeTypeEnum.Tuic]: 'tuic',
35
- [types_1.NodeTypeEnum.Wireguard]: 'wireguard',
36
- [types_1.NodeTypeEnum.Hysteria2]: 'hysteria2',
37
- };
38
- /**
39
- * @see https://sing-box.sagernet.org/configuration/outbound/
40
- */
41
- function nodeListMapper(nodeConfig) {
42
- if (nodeConfig.type in typeMap === false) {
43
- logger.warn(`不支持为 sing-box 生成 ${nodeConfig.type} 的节点,节点 ${nodeConfig.nodeName} 会被忽略`);
44
- return null;
45
- }
46
- const node = {
47
- type: typeMap[nodeConfig.type],
48
- tag: nodeConfig.nodeName,
49
- };
50
- if ('hostname' in nodeConfig) {
51
- node.server = nodeConfig.hostname;
52
- }
53
- if ('port' in nodeConfig) {
54
- node.server_port = Number(nodeConfig.port);
55
- }
56
- if ('udpRelay' in nodeConfig && nodeConfig.udpRelay === false) {
57
- node.network = 'tcp';
58
- }
59
- const setTls = (field, v) => {
60
- if (!node.tls) {
61
- node.tls = { enabled: true };
62
- }
63
- node.tls[field] = v;
64
- };
65
- switch (nodeConfig.type) {
66
- case types_1.NodeTypeEnum.Shadowsocks:
67
- node.method = nodeConfig.method;
68
- node.password = nodeConfig.password;
69
- if (nodeConfig.obfs) {
70
- if (['tls', 'http'].includes(nodeConfig.obfs)) {
71
- node.plugin = 'obfs-local';
72
- node.plugin_opts = (0, ss_1.stringifySip003Options)(prune({
73
- obfs: nodeConfig.obfs,
74
- 'obfs-host': nodeConfig.obfsHost,
75
- }));
76
- }
77
- if (['ws', 'wss', 'quic'].includes(nodeConfig.obfs)) {
78
- node.plugin = 'v2ray-plugin';
79
- node.plugin_opts = (0, ss_1.stringifySip003Options)(prune({
80
- mode: nodeConfig.obfs === 'quic' ? 'quic' : 'websocket',
81
- tls: ['wss', 'quic'].includes(nodeConfig.obfs),
82
- host: nodeConfig.obfsHost,
83
- path: nodeConfig.obfsUri,
84
- mux: nodeConfig.mux === false ? 0 : null,
85
- }));
86
- }
87
- }
88
- break;
89
- case types_1.NodeTypeEnum.Vless:
90
- case types_1.NodeTypeEnum.Vmess: {
91
- node.uuid = nodeConfig.uuid;
92
- if (nodeConfig.type === types_1.NodeTypeEnum.Vmess) {
93
- node.security = nodeConfig.method;
94
- if (nodeConfig.alterId) {
95
- node.alter_id = Number(nodeConfig.alterId);
96
- }
97
- }
98
- if (nodeConfig.type === types_1.NodeTypeEnum.Vless) {
99
- node.flow = nodeConfig.flow;
100
- if (nodeConfig.realityOpts) {
101
- setTls('utls', {
102
- enabled: true,
103
- fingerprint: nodeConfig.clientFingerprint,
104
- });
105
- setTls('reality', {
106
- enabled: true,
107
- public_key: nodeConfig.realityOpts.publicKey,
108
- short_id: nodeConfig.realityOpts.shortId,
109
- });
110
- }
111
- }
112
- switch (nodeConfig.network) {
113
- case 'http':
114
- node.transport = {
115
- type: 'http',
116
- // host: [],
117
- path: nodeConfig.httpOpts?.path[0],
118
- method: nodeConfig.httpOpts?.method,
119
- headers: normalizeHeaders(nodeConfig.httpOpts?.headers),
120
- // idle_timeout: '15s',
121
- // ping_timeout: '15s',
122
- };
123
- break;
124
- case 'ws':
125
- node.transport = {
126
- type: 'ws',
127
- path: nodeConfig.wsOpts?.path,
128
- headers: normalizeHeaders(nodeConfig.wsOpts?.headers),
129
- // max_early_data: 0,
130
- // early_data_header_name: '',
131
- };
132
- break;
133
- case 'quic':
134
- node.transport = {
135
- type: 'quic',
136
- };
137
- break;
138
- case 'grpc':
139
- node.transport = {
140
- type: 'grpc',
141
- service_name: nodeConfig.grpcOpts?.serviceName,
142
- // idle_timeout: '15s',
143
- // ping_timeout: '15s',
144
- // permit_without_stream: false,
145
- };
146
- break;
147
- case 'httpupgrade':
148
- node.transport = {
149
- type: 'httpupgrade',
150
- host: nodeConfig.httpUpgradeOpts?.host,
151
- path: nodeConfig.httpUpgradeOpts?.path,
152
- headers: normalizeHeaders(nodeConfig.httpUpgradeOpts?.headers),
153
- };
154
- break;
155
- case 'tcp':
156
- break;
157
- default:
158
- logger.warn(`sing-box 的 ${nodeConfig.type} 节点不支持 network=${nodeConfig.network},节点 ${nodeConfig.nodeName} 会被忽略`);
159
- return null;
160
- }
161
- break;
162
- }
163
- case types_1.NodeTypeEnum.HTTP:
164
- case types_1.NodeTypeEnum.HTTPS:
165
- node.username = nodeConfig.username;
166
- node.password = nodeConfig.password;
167
- node.path = nodeConfig.path;
168
- node.headers = normalizeHeaders(nodeConfig.headers);
169
- if (nodeConfig.type === types_1.NodeTypeEnum.HTTPS) {
170
- setTls('enabled', true);
171
- }
172
- break;
173
- case types_1.NodeTypeEnum.Trojan:
174
- node.password = nodeConfig.password;
175
- if (nodeConfig.network) {
176
- switch (nodeConfig.network) {
177
- case 'ws':
178
- node.transport = {
179
- type: 'ws',
180
- path: nodeConfig.wsPath,
181
- headers: normalizeHeaders(nodeConfig.wsHeaders),
182
- // max_early_data: 0,
183
- // early_data_header_name: '',
184
- };
185
- break;
186
- default:
187
- logger.warn(`sing-box 的 ${nodeConfig.type} 节点不支持 network=${nodeConfig.network},节点 ${nodeConfig.nodeName} 会被忽略`);
188
- return null;
189
- }
190
- }
191
- break;
192
- case types_1.NodeTypeEnum.Socks5:
193
- node.username = nodeConfig.username;
194
- node.password = nodeConfig.password;
195
- break;
196
- case types_1.NodeTypeEnum.Tuic:
197
- if ('uuid' in nodeConfig === false) {
198
- logger.warn(`sing-box 仅支持 tuic v5,节点 ${nodeConfig.nodeName} 会被忽略`);
199
- return null;
200
- }
201
- node.uuid = nodeConfig.uuid;
202
- node.password = nodeConfig.password;
203
- // congestion_control: 'cubic',
204
- // udp_relay_mode: 'native',
205
- // udp_over_stream: false,
206
- // zero_rtt_handshake: false,
207
- // heartbeat: '10s',
208
- break;
209
- case types_1.NodeTypeEnum.Hysteria2:
210
- node.up_mbps = nodeConfig.uploadBandwidth;
211
- node.down_mbps = nodeConfig.downloadBandwidth;
212
- node.obfs = {
213
- type: nodeConfig.obfs,
214
- password: nodeConfig.obfsPassword,
215
- };
216
- node.password = nodeConfig.password;
217
- if (nodeConfig.portHopping) {
218
- const ports = nodeConfig.portHopping
219
- .split(',')
220
- .filter((portConfig) => portConfig.includes('-'))
221
- .map((portConfig) => portConfig.replace(/-/g, ':'));
222
- node.server_ports = ports;
223
- }
224
- if (nodeConfig.portHoppingInterval) {
225
- node.hop_interval = `${nodeConfig.portHoppingInterval}s`;
226
- }
227
- break;
228
- case types_1.NodeTypeEnum.Wireguard:
229
- // const sample = {
230
- // system_interface: false,
231
- // gso: false,
232
- // interface_name: 'wg0',
233
- // address: ['10.0.0.2/32'],
234
- // private_key: 'YNXtAzepDqRv9H52osJVDQnznT5AM11eCK3ESpwSt04=',
235
- // peers: [
236
- // {
237
- // address: '127.0.0.1',
238
- // port: 1080,
239
- // public_key: 'Z1XXLsKYkYxuiYjJIkRvtIKFepCYHTgON+GwPq7SOV4=',
240
- // pre_shared_key: '31aIhAPwktDGpH4JDhA8GNvjFXEf/a6+UaQRyOAiyfM=',
241
- // allowed_ips: ['0.0.0.0/0'],
242
- // reserved: [0, 0, 0],
243
- // },
244
- // ],
245
- // peer_public_key: 'Z1XXLsKYkYxuiYjJIkRvtIKFepCYHTgON+GwPq7SOV4=',
246
- // pre_shared_key: '31aIhAPwktDGpH4JDhA8GNvjFXEf/a6+UaQRyOAiyfM=',
247
- // reserved: [0, 0, 0],
248
- // workers: 4,
249
- // mtu: 1408,
250
- // }
251
- node.address = [`${nodeConfig.selfIp}/32`];
252
- if (nodeConfig.selfIpV6) {
253
- node.address.push(`${nodeConfig.selfIpV6}/128`);
254
- }
255
- node.private_key = nodeConfig.privateKey;
256
- node.peers = nodeConfig.peers.map((peer) => {
257
- const endpoint = new URL(`http://${peer.endpoint}`);
258
- return {
259
- address: endpoint.hostname,
260
- port: Number(endpoint.port),
261
- public_key: peer.publicKey,
262
- pre_shared_key: peer.presharedKey,
263
- allowed_ips: peer.allowedIps?.split(',').map((ip) => ip.trim()),
264
- reserved: peer.reservedBits,
265
- };
266
- });
267
- node.mtu = nodeConfig.mtu;
268
- break;
269
- }
270
- if ('tls' in nodeConfig && nodeConfig.tls) {
271
- setTls('enabled', true);
272
- }
273
- const r = validators_1.TlsNodeConfigValidator.safeParse(nodeConfig);
274
- if (r.success) {
275
- const tlsConfig = r.data;
276
- if (tlsConfig.sni) {
277
- setTls('server_name', tlsConfig.sni);
278
- }
279
- if (tlsConfig.skipCertVerify) {
280
- setTls('insecure', true);
281
- }
282
- if (tlsConfig.alpn) {
283
- setTls('alpn', tlsConfig.alpn);
284
- }
285
- if (tlsConfig.tls13) {
286
- setTls('min_version', '1.3');
287
- }
288
- if (tlsConfig.clientFingerprint) {
289
- setTls('utls', {
290
- enabled: true,
291
- fingerprint: tlsConfig.clientFingerprint,
292
- });
293
- }
294
- }
295
- if ('multiplex' in nodeConfig) {
296
- const r = validators_1.MultiplexValidator.safeParse(nodeConfig.multiplex);
297
- if (r.success) {
298
- const multiplexConfig = r.data;
299
- node.multiplex = (0, _1.pickAndFormatKeys)(multiplexConfig, ['protocol', 'maxConnections', 'minStreams', 'maxStreams', 'padding'], { keyFormat: 'snakeCase' });
300
- node.multiplex.enabled = true;
301
- if (multiplexConfig.brutal) {
302
- node.multiplex.brutal = (0, _1.pickAndFormatKeys)(multiplexConfig.brutal, ['upMbps', 'downMbps'], { keyFormat: 'snakeCase' });
303
- }
304
- }
305
- }
306
- if (nodeConfig.tfo) {
307
- node.tcp_fast_open = true;
308
- }
309
- if (nodeConfig.mptcp) {
310
- node.tcp_multi_path = true;
311
- }
312
- if (nodeConfig.underlyingProxy) {
313
- node.detour = nodeConfig.underlyingProxy;
314
- }
315
- if (!nodeConfig.shadowTls) {
316
- return prune(node);
317
- }
318
- const { server, server_port, ..._node } = node;
319
- const tag = `${node.tag}-shadowtls`;
320
- _node.detour = tag;
321
- return [
322
- prune(_node),
323
- prune({
324
- type: 'shadowtls',
325
- tag: tag,
326
- server: server,
327
- server_port: server_port,
328
- version: nodeConfig.shadowTls.version,
329
- password: nodeConfig.shadowTls.password,
330
- tls: {
331
- enabled: true,
332
- server_name: nodeConfig.shadowTls.sni,
333
- },
334
- }),
335
- ];
336
- }
337
- function normalizeHeaders(headers) {
338
- if (!headers) {
339
- return {};
340
- }
341
- return Object.fromEntries(Object.entries(headers).map(([k, v]) => [k, [v]]));
342
- }
343
- // delete all undefined / null / [] / {} / '' properties
344
- function prune(obj) {
345
- const prunedObj = {};
346
- for (const key in obj) {
347
- const value = obj[key];
348
- // Check if the property exists and is not null or undefined
349
- if (value !== null && value !== undefined) {
350
- // Check if the property is an array
351
- if (Array.isArray(value)) {
352
- // Check if the array is empty
353
- if (value.length > 0) {
354
- prunedObj[key] = value;
355
- }
356
- }
357
- else if (typeof value === 'object') {
358
- // Check if the object is empty
359
- if (Object.keys(value).length > 0) {
360
- prunedObj[key] = prune(value); // Recursively prune the object
361
- }
362
- }
363
- else if (typeof value === 'string') {
364
- // Check if the string is not empty
365
- if (value.trim().length > 0) {
366
- prunedObj[key] = value;
367
- }
368
- }
369
- else {
370
- // Add non-empty string, number, or boolean values
371
- prunedObj[key] = value;
372
- }
373
- }
374
- }
375
- return prunedObj;
376
- }
377
- //# sourceMappingURL=singbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"singbox.js","sourceRoot":"","sources":["../../src/utils/singbox.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ShadowsocksNodeConfig } from '../types';
2
- export declare const parseSSUri: (str: string) => ShadowsocksNodeConfig;
3
- export declare const stringifySip003Options: (args?: Record<string, any>) => string;