surgio 2.15.0 → 2.18.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.
- package/CHANGELOG.md +29 -0
- package/build/generator/artifact.d.ts +3 -1
- package/build/generator/artifact.js +7 -5
- package/build/index.d.ts +2 -1
- package/build/index.js +6 -3
- package/build/provider/ClashProvider.d.ts +9 -2
- package/build/provider/ClashProvider.js +15 -7
- package/build/provider/CustomProvider.js +14 -5
- package/build/provider/Provider.d.ts +4 -1
- package/build/provider/Provider.js +36 -9
- package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +5 -3
- package/build/provider/ShadowsocksJsonSubscribeProvider.js +42 -4
- package/build/provider/ShadowsocksSubscribeProvider.d.ts +4 -2
- package/build/provider/ShadowsocksSubscribeProvider.js +7 -5
- package/build/provider/ShadowsocksrSubscribeProvider.d.ts +4 -2
- package/build/provider/ShadowsocksrSubscribeProvider.js +7 -5
- package/build/provider/SsdProvider.d.ts +4 -2
- package/build/provider/SsdProvider.js +7 -5
- package/build/provider/TrojanProvider.d.ts +9 -2
- package/build/provider/TrojanProvider.js +15 -6
- package/build/provider/V2rayNSubscribeProvider.d.ts +11 -2
- package/build/provider/V2rayNSubscribeProvider.js +16 -14
- package/build/types.d.ts +3 -2
- package/build/utils/cache.d.ts +4 -3
- package/build/utils/cache.js +17 -9
- package/build/utils/clash.d.ts +1 -1
- package/build/utils/dns.js +5 -5
- package/build/utils/env-flag.js +1 -1
- package/build/utils/index.d.ts +5 -8
- package/build/utils/index.js +8 -269
- package/build/utils/loon.js +50 -18
- package/build/utils/patch-proxy.js +7 -2
- package/build/utils/quantumult.d.ts +6 -0
- package/build/utils/quantumult.js +255 -0
- package/build/utils/surge.d.ts +1 -1
- package/package.json +2 -3
package/build/utils/index.js
CHANGED
|
@@ -17,9 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.isRailway = exports.isPkgBundle = exports.isGitLabCI = exports.isGitHubActions = exports.isHeroku = exports.isVercel = exports.isNow = exports.isIp = exports.lowercaseHeaderKeys = exports.formatV2rayConfig = exports.ensureConfigFolder = exports.normalizeClashProxyGroupConfig = exports.decodeStringList = exports.pickAndFormatStringList = exports.toYaml = exports.generateClashProxyGroup = exports.getNodeNames = exports.getShadowsocksNodesJSON = exports.
|
|
20
|
+
exports.isNetlify = exports.isRailway = exports.isPkgBundle = exports.isGitLabCI = exports.isGitHubActions = exports.isHeroku = exports.isVercel = exports.isNow = exports.isIp = exports.msToSeconds = exports.lowercaseHeaderKeys = exports.formatV2rayConfig = exports.ensureConfigFolder = exports.normalizeClashProxyGroupConfig = exports.decodeStringList = exports.pickAndFormatStringList = exports.toYaml = exports.generateClashProxyGroup = exports.getNodeNames = exports.getShadowsocksNodesJSON = exports.getV2rayNNodes = exports.getShadowsocksrNodes = exports.getShadowsocksNodes = exports.fromBase64 = exports.toBase64 = exports.fromUrlSafeBase64 = exports.toUrlSafeBase64 = exports.getMellowNodes = exports.getUrl = exports.getDownloadUrl = void 0;
|
|
21
21
|
const logger_1 = require("@surgio/logger");
|
|
22
|
-
const assert_1 = __importDefault(require("assert"));
|
|
23
22
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
24
23
|
const lodash_1 = __importDefault(require("lodash"));
|
|
25
24
|
const os_1 = __importDefault(require("os"));
|
|
@@ -30,13 +29,12 @@ const urlsafe_base64_1 = __importDefault(require("urlsafe-base64"));
|
|
|
30
29
|
const yaml_1 = __importDefault(require("yaml"));
|
|
31
30
|
const net_1 = __importDefault(require("net"));
|
|
32
31
|
const types_1 = require("../types");
|
|
33
|
-
const cache_1 = require("./cache");
|
|
34
32
|
const constant_1 = require("../constant");
|
|
35
33
|
const filter_1 = require("./filter");
|
|
36
|
-
const http_client_1 = __importDefault(require("./http-client"));
|
|
37
34
|
const v2ray_1 = require("./v2ray");
|
|
38
35
|
__exportStar(require("./surge"), exports);
|
|
39
36
|
__exportStar(require("./clash"), exports);
|
|
37
|
+
__exportStar(require("./quantumult"), exports);
|
|
40
38
|
const logger = (0, logger_1.createLogger)({ service: 'surgio:utils' });
|
|
41
39
|
const getDownloadUrl = (baseUrl = '/', artifactName, inline = true, accessToken) => {
|
|
42
40
|
let urlSearchParams;
|
|
@@ -68,42 +66,6 @@ const getUrl = (baseUrl, path, accessToken) => {
|
|
|
68
66
|
return url.toString();
|
|
69
67
|
};
|
|
70
68
|
exports.getUrl = getUrl;
|
|
71
|
-
const getShadowsocksJSONConfig = async (url, udpRelay) => {
|
|
72
|
-
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
73
|
-
async function requestConfigFromRemote() {
|
|
74
|
-
const response = cache_1.ConfigCache.has(url)
|
|
75
|
-
? JSON.parse(cache_1.ConfigCache.get(url))
|
|
76
|
-
: await (async () => {
|
|
77
|
-
const res = await http_client_1.default.get(url);
|
|
78
|
-
cache_1.ConfigCache.set(url, res.body);
|
|
79
|
-
return JSON.parse(res.body);
|
|
80
|
-
})();
|
|
81
|
-
return response.configs.map((item) => {
|
|
82
|
-
const nodeConfig = {
|
|
83
|
-
nodeName: item.remarks,
|
|
84
|
-
type: types_1.NodeTypeEnum.Shadowsocks,
|
|
85
|
-
hostname: item.server,
|
|
86
|
-
port: item.server_port,
|
|
87
|
-
method: item.method,
|
|
88
|
-
password: item.password,
|
|
89
|
-
};
|
|
90
|
-
if (typeof udpRelay === 'boolean') {
|
|
91
|
-
nodeConfig['udp-relay'] = udpRelay;
|
|
92
|
-
}
|
|
93
|
-
if (item.plugin === 'obfs-local') {
|
|
94
|
-
const obfs = item.plugin_opts.match(/obfs=(\w+)/);
|
|
95
|
-
const obfsHost = item.plugin_opts.match(/obfs-host=(.+)$/);
|
|
96
|
-
if (obfs) {
|
|
97
|
-
nodeConfig.obfs = obfs[1];
|
|
98
|
-
nodeConfig['obfs-host'] = obfsHost ? obfsHost[1] : 'www.bing.com';
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return nodeConfig;
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
return await requestConfigFromRemote();
|
|
105
|
-
};
|
|
106
|
-
exports.getShadowsocksJSONConfig = getShadowsocksJSONConfig;
|
|
107
69
|
const getMellowNodes = function (list, filter) {
|
|
108
70
|
// istanbul ignore next
|
|
109
71
|
if (arguments.length === 2 && typeof filter === 'undefined') {
|
|
@@ -273,234 +235,6 @@ const getV2rayNNodes = (list) => {
|
|
|
273
235
|
return result.join('\n');
|
|
274
236
|
};
|
|
275
237
|
exports.getV2rayNNodes = getV2rayNNodes;
|
|
276
|
-
const getQuantumultNodes = function (list, groupName = 'Surgio', filter) {
|
|
277
|
-
// istanbul ignore next
|
|
278
|
-
if (arguments.length === 3 && typeof filter === 'undefined') {
|
|
279
|
-
throw new Error(constant_1.ERR_INVALID_FILTER);
|
|
280
|
-
}
|
|
281
|
-
function getHeader(wsHeaders) {
|
|
282
|
-
return Object.keys(wsHeaders)
|
|
283
|
-
.map((headerKey) => `${headerKey}:${wsHeaders[headerKey]}`)
|
|
284
|
-
.join('[Rr][Nn]');
|
|
285
|
-
}
|
|
286
|
-
const result = (0, filter_1.applyFilter)(list, filter)
|
|
287
|
-
.map((nodeConfig) => {
|
|
288
|
-
switch (nodeConfig.type) {
|
|
289
|
-
case types_1.NodeTypeEnum.Vmess: {
|
|
290
|
-
const config = [
|
|
291
|
-
'vmess',
|
|
292
|
-
nodeConfig.hostname,
|
|
293
|
-
nodeConfig.port,
|
|
294
|
-
nodeConfig.method === 'auto'
|
|
295
|
-
? 'chacha20-ietf-poly1305'
|
|
296
|
-
: nodeConfig.method,
|
|
297
|
-
JSON.stringify(nodeConfig.uuid),
|
|
298
|
-
nodeConfig.alterId,
|
|
299
|
-
`group=${groupName}`,
|
|
300
|
-
`over-tls=${nodeConfig.tls === true ? 'true' : 'false'}`,
|
|
301
|
-
`certificate=1`,
|
|
302
|
-
`obfs=${nodeConfig.network}`,
|
|
303
|
-
`obfs-path=${JSON.stringify(nodeConfig.path || '/')}`,
|
|
304
|
-
`obfs-header=${JSON.stringify(getHeader(Object.assign({ host: nodeConfig.host || nodeConfig.hostname, 'user-agent': constant_1.OBFS_UA }, lodash_1.default.omit(nodeConfig.wsHeaders, ['host']))))}`,
|
|
305
|
-
]
|
|
306
|
-
.filter((value) => !!value)
|
|
307
|
-
.join(',');
|
|
308
|
-
return ('vmess://' + (0, exports.toBase64)([nodeConfig.nodeName, config].join(' = ')));
|
|
309
|
-
}
|
|
310
|
-
case types_1.NodeTypeEnum.Shadowsocks: {
|
|
311
|
-
return (0, exports.getShadowsocksNodes)([nodeConfig], groupName);
|
|
312
|
-
}
|
|
313
|
-
case types_1.NodeTypeEnum.Shadowsocksr:
|
|
314
|
-
return (0, exports.getShadowsocksrNodes)([nodeConfig], groupName);
|
|
315
|
-
case types_1.NodeTypeEnum.HTTPS: {
|
|
316
|
-
const config = [
|
|
317
|
-
nodeConfig.nodeName,
|
|
318
|
-
[
|
|
319
|
-
'http',
|
|
320
|
-
`upstream-proxy-address=${nodeConfig.hostname}`,
|
|
321
|
-
`upstream-proxy-port=${nodeConfig.port}`,
|
|
322
|
-
'upstream-proxy-auth=true',
|
|
323
|
-
`upstream-proxy-username=${nodeConfig.username}`,
|
|
324
|
-
`upstream-proxy-password=${nodeConfig.password}`,
|
|
325
|
-
'over-tls=true',
|
|
326
|
-
'certificate=1',
|
|
327
|
-
].join(', '),
|
|
328
|
-
].join(' = ');
|
|
329
|
-
return 'http://' + (0, exports.toBase64)(config);
|
|
330
|
-
}
|
|
331
|
-
// istanbul ignore next
|
|
332
|
-
default:
|
|
333
|
-
logger.warn(`不支持为 Quantumult 生成 ${nodeConfig.type} 的节点,节点 ${nodeConfig.nodeName} 会被省略`);
|
|
334
|
-
return void 0;
|
|
335
|
-
}
|
|
336
|
-
})
|
|
337
|
-
.filter((item) => item !== undefined);
|
|
338
|
-
return result.join('\n');
|
|
339
|
-
};
|
|
340
|
-
exports.getQuantumultNodes = getQuantumultNodes;
|
|
341
|
-
/**
|
|
342
|
-
* @see https://github.com/crossutility/Quantumult-X/blob/master/sample.conf
|
|
343
|
-
*/
|
|
344
|
-
const getQuantumultXNodes = function (list, filter) {
|
|
345
|
-
// istanbul ignore next
|
|
346
|
-
if (arguments.length === 2 && typeof filter === 'undefined') {
|
|
347
|
-
throw new Error(constant_1.ERR_INVALID_FILTER);
|
|
348
|
-
}
|
|
349
|
-
const result = (0, filter_1.applyFilter)(list, filter)
|
|
350
|
-
.map((nodeConfig) => {
|
|
351
|
-
var _a;
|
|
352
|
-
switch (nodeConfig.type) {
|
|
353
|
-
case types_1.NodeTypeEnum.Vmess: {
|
|
354
|
-
const config = [
|
|
355
|
-
`${nodeConfig.hostname}:${nodeConfig.port}`,
|
|
356
|
-
// method 为 auto 时 qx 会无法识别
|
|
357
|
-
nodeConfig.method === 'auto'
|
|
358
|
-
? `method=chacha20-ietf-poly1305`
|
|
359
|
-
: `method=${nodeConfig.method}`,
|
|
360
|
-
`password=${nodeConfig.uuid}`,
|
|
361
|
-
...(nodeConfig['udp-relay'] ? ['udp-relay=true'] : []),
|
|
362
|
-
...(nodeConfig.tfo ? ['fast-open=true'] : []),
|
|
363
|
-
...(((_a = nodeConfig.quantumultXConfig) === null || _a === void 0 ? void 0 : _a.vmessAEAD)
|
|
364
|
-
? ['aead=true']
|
|
365
|
-
: ['aead=false']),
|
|
366
|
-
];
|
|
367
|
-
switch (nodeConfig.network) {
|
|
368
|
-
case 'ws':
|
|
369
|
-
if (nodeConfig.tls) {
|
|
370
|
-
config.push(`obfs=wss`);
|
|
371
|
-
if (nodeConfig.skipCertVerify) {
|
|
372
|
-
config.push('tls-verification=false');
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
config.push('tls-verification=true');
|
|
376
|
-
}
|
|
377
|
-
// istanbul ignore next
|
|
378
|
-
if (nodeConfig.tls13) {
|
|
379
|
-
config.push(`tls13=true`);
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
config.push(`obfs=ws`);
|
|
384
|
-
}
|
|
385
|
-
config.push(`obfs-uri=${nodeConfig.path || '/'}`);
|
|
386
|
-
config.push(`obfs-host=${nodeConfig.host || nodeConfig.hostname}`);
|
|
387
|
-
break;
|
|
388
|
-
case 'tcp':
|
|
389
|
-
if (nodeConfig.tls) {
|
|
390
|
-
config.push(`obfs=over-tls`);
|
|
391
|
-
if (nodeConfig.skipCertVerify) {
|
|
392
|
-
config.push('tls-verification=false');
|
|
393
|
-
}
|
|
394
|
-
else {
|
|
395
|
-
config.push('tls-verification=true');
|
|
396
|
-
}
|
|
397
|
-
// istanbul ignore next
|
|
398
|
-
if (nodeConfig.tls13) {
|
|
399
|
-
config.push(`tls13=true`);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
break;
|
|
403
|
-
default:
|
|
404
|
-
// do nothing
|
|
405
|
-
}
|
|
406
|
-
config.push(`tag=${nodeConfig.nodeName}`);
|
|
407
|
-
// istanbul ignore next
|
|
408
|
-
if (nodeConfig.wsHeaders &&
|
|
409
|
-
Object.keys(nodeConfig.wsHeaders).length > 1) {
|
|
410
|
-
logger.warn(`Quantumult X 不支持自定义额外的 Header 字段,节点 ${nodeConfig.nodeName} 可能不可用`);
|
|
411
|
-
}
|
|
412
|
-
return `vmess=${config.join(', ')}`;
|
|
413
|
-
}
|
|
414
|
-
case types_1.NodeTypeEnum.Shadowsocks: {
|
|
415
|
-
const config = [
|
|
416
|
-
`${nodeConfig.hostname}:${nodeConfig.port}`,
|
|
417
|
-
...(0, exports.pickAndFormatStringList)(nodeConfig, ['method', 'password']),
|
|
418
|
-
...(nodeConfig.obfs && ['http', 'tls'].includes(nodeConfig.obfs)
|
|
419
|
-
? [
|
|
420
|
-
`obfs=${nodeConfig.obfs}`,
|
|
421
|
-
`obfs-host=${nodeConfig['obfs-host']}`,
|
|
422
|
-
]
|
|
423
|
-
: []),
|
|
424
|
-
...(nodeConfig.obfs && ['ws', 'wss'].includes(nodeConfig.obfs)
|
|
425
|
-
? [
|
|
426
|
-
`obfs=${nodeConfig.obfs}`,
|
|
427
|
-
`obfs-host=${nodeConfig['obfs-host'] || nodeConfig.hostname}`,
|
|
428
|
-
`obfs-uri=${nodeConfig['obfs-uri'] || '/'}`,
|
|
429
|
-
]
|
|
430
|
-
: []),
|
|
431
|
-
...(nodeConfig['udp-relay'] ? [`udp-relay=true`] : []),
|
|
432
|
-
...(nodeConfig.tfo ? [`fast-open=${nodeConfig.tfo}`] : []),
|
|
433
|
-
];
|
|
434
|
-
if (nodeConfig.obfs === 'wss') {
|
|
435
|
-
if (nodeConfig.skipCertVerify) {
|
|
436
|
-
config.push('tls-verification=false');
|
|
437
|
-
}
|
|
438
|
-
else {
|
|
439
|
-
config.push('tls-verification=true');
|
|
440
|
-
}
|
|
441
|
-
if (nodeConfig.tls13) {
|
|
442
|
-
config.push('tls13=true');
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
// istanbul ignore next
|
|
446
|
-
if (nodeConfig.wsHeaders &&
|
|
447
|
-
Object.keys(nodeConfig.wsHeaders).length > 1) {
|
|
448
|
-
logger.warn(`Quantumult X 不支持自定义额外的 Header 字段,节点 ${nodeConfig.nodeName} 可能不可用`);
|
|
449
|
-
}
|
|
450
|
-
config.push(`tag=${nodeConfig.nodeName}`);
|
|
451
|
-
return `shadowsocks=${config.join(', ')}`;
|
|
452
|
-
}
|
|
453
|
-
case types_1.NodeTypeEnum.Shadowsocksr: {
|
|
454
|
-
const config = [
|
|
455
|
-
`${nodeConfig.hostname}:${nodeConfig.port}`,
|
|
456
|
-
...(0, exports.pickAndFormatStringList)(nodeConfig, ['method', 'password']),
|
|
457
|
-
`ssr-protocol=${nodeConfig.protocol}`,
|
|
458
|
-
`ssr-protocol-param=${nodeConfig.protoparam}`,
|
|
459
|
-
`obfs=${nodeConfig.obfs}`,
|
|
460
|
-
`obfs-host=${nodeConfig.obfsparam}`,
|
|
461
|
-
...(nodeConfig['udp-relay'] ? [`udp-relay=true`] : []),
|
|
462
|
-
...(nodeConfig.tfo ? [`fast-open=${nodeConfig.tfo}`] : []),
|
|
463
|
-
`tag=${nodeConfig.nodeName}`,
|
|
464
|
-
].join(', ');
|
|
465
|
-
return `shadowsocks=${config}`;
|
|
466
|
-
}
|
|
467
|
-
case types_1.NodeTypeEnum.HTTP:
|
|
468
|
-
case types_1.NodeTypeEnum.HTTPS: {
|
|
469
|
-
const config = [
|
|
470
|
-
`${nodeConfig.hostname}:${nodeConfig.port}`,
|
|
471
|
-
...(0, exports.pickAndFormatStringList)(nodeConfig, ['username', 'password']),
|
|
472
|
-
...(nodeConfig.tfo ? [`fast-open=${nodeConfig.tfo}`] : []),
|
|
473
|
-
];
|
|
474
|
-
if (nodeConfig.type === types_1.NodeTypeEnum.HTTPS) {
|
|
475
|
-
config.push('over-tls=true', `tls-verification=${nodeConfig.skipCertVerify !== true}`, ...(nodeConfig.tls13 ? [`tls13=${nodeConfig.tls13}`] : []));
|
|
476
|
-
}
|
|
477
|
-
config.push(`tag=${nodeConfig.nodeName}`);
|
|
478
|
-
return `http=${config.join(', ')}`;
|
|
479
|
-
}
|
|
480
|
-
case types_1.NodeTypeEnum.Trojan: {
|
|
481
|
-
const config = [
|
|
482
|
-
`${nodeConfig.hostname}:${nodeConfig.port}`,
|
|
483
|
-
...(0, exports.pickAndFormatStringList)(nodeConfig, ['password']),
|
|
484
|
-
'over-tls=true',
|
|
485
|
-
`tls-verification=${nodeConfig.skipCertVerify !== true}`,
|
|
486
|
-
...(nodeConfig.sni ? [`tls-host=${nodeConfig.sni}`] : []),
|
|
487
|
-
...(nodeConfig.tfo ? [`fast-open=${nodeConfig.tfo}`] : []),
|
|
488
|
-
...(nodeConfig['udp-relay'] ? [`udp-relay=true`] : []),
|
|
489
|
-
...(nodeConfig.tls13 ? [`tls13=${nodeConfig.tls13}`] : []),
|
|
490
|
-
`tag=${nodeConfig.nodeName}`,
|
|
491
|
-
];
|
|
492
|
-
return `trojan=${config.join(', ')}`;
|
|
493
|
-
}
|
|
494
|
-
// istanbul ignore next
|
|
495
|
-
default:
|
|
496
|
-
logger.warn(`不支持为 QuantumultX 生成 ${nodeConfig.type} 的节点,节点 ${nodeConfig.nodeName} 会被省略`);
|
|
497
|
-
return void 0;
|
|
498
|
-
}
|
|
499
|
-
})
|
|
500
|
-
.filter((item) => item !== undefined);
|
|
501
|
-
return result.join('\n');
|
|
502
|
-
};
|
|
503
|
-
exports.getQuantumultXNodes = getQuantumultXNodes;
|
|
504
238
|
// istanbul ignore next
|
|
505
239
|
const getShadowsocksNodesJSON = (list) => {
|
|
506
240
|
const nodes = list
|
|
@@ -698,6 +432,8 @@ const lowercaseHeaderKeys = (headers) => {
|
|
|
698
432
|
return wsHeaders;
|
|
699
433
|
};
|
|
700
434
|
exports.lowercaseHeaderKeys = lowercaseHeaderKeys;
|
|
435
|
+
const msToSeconds = (ms) => Math.floor(ms / 1000);
|
|
436
|
+
exports.msToSeconds = msToSeconds;
|
|
701
437
|
// istanbul ignore next
|
|
702
438
|
const isIp = (str) => net_1.default.isIPv4(str) || net_1.default.isIPv6(str);
|
|
703
439
|
exports.isIp = isIp;
|
|
@@ -723,4 +459,7 @@ exports.isPkgBundle = isPkgBundle;
|
|
|
723
459
|
// istanbul ignore next
|
|
724
460
|
const isRailway = () => typeof process.env.RAILWAY_STATIC_URL !== 'undefined';
|
|
725
461
|
exports.isRailway = isRailway;
|
|
726
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBOEM7QUFDOUMsb0RBQTRCO0FBQzVCLHdEQUEwQjtBQUMxQixvREFBdUI7QUFDdkIsNENBQW9CO0FBQ3BCLCtCQUE0QjtBQUM1QixnRUFBdUM7QUFFdkMsNkJBQTJDO0FBQzNDLG9FQUEyQztBQUMzQyxnREFBd0I7QUFDeEIsOENBQXNCO0FBRXRCLG9DQWFrQjtBQUNsQixtQ0FBc0M7QUFDdEMsMENBQTBEO0FBQzFELHFDQUF1RDtBQUN2RCxnRUFBdUM7QUFDdkMsbUNBQXlDO0FBRXpDLDBDQUF3QjtBQUN4QiwwQ0FBd0I7QUFFeEIsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxFQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFFbEQsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsT0FBTyxHQUFHLEdBQUcsRUFDYixZQUFvQixFQUNwQixNQUFNLEdBQUcsSUFBSSxFQUNiLFdBQW9CLEVBQ1osRUFBRTtJQUNWLElBQUksZUFBZ0MsQ0FBQztJQUNyQyxJQUFJLElBQVksQ0FBQztJQUVqQixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsZUFBZSxHQUFHLElBQUkscUJBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbkM7U0FBTTtRQUNMLGVBQWUsR0FBRyxJQUFJLHFCQUFlLEVBQUUsQ0FBQztRQUN4QyxJQUFJLEdBQUcsWUFBWSxDQUFDO0tBQ3JCO0lBRUQsSUFBSSxXQUFXLEVBQUU7UUFDZixlQUFlLENBQUMsR0FB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
|
|
462
|
+
// istanbul ignore next
|
|
463
|
+
const isNetlify = () => typeof process.env.NETLIFY !== 'undefined';
|
|
464
|
+
exports.isNetlify = isNetlify;
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBOEM7QUFFOUMsd0RBQTBCO0FBQzFCLG9EQUF1QjtBQUN2Qiw0Q0FBb0I7QUFDcEIsK0JBQTRCO0FBQzVCLGdFQUF1QztBQUV2Qyw2QkFBMkM7QUFDM0Msb0VBQTJDO0FBQzNDLGdEQUF3QjtBQUN4Qiw4Q0FBc0I7QUFFdEIsb0NBWWtCO0FBQ2xCLDBDQUEwRDtBQUMxRCxxQ0FBdUQ7QUFDdkQsbUNBQXlDO0FBRXpDLDBDQUF3QjtBQUN4QiwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBRTdCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksRUFBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBRWxELE1BQU0sY0FBYyxHQUFHLENBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQ2IsWUFBb0IsRUFDcEIsTUFBTSxHQUFHLElBQUksRUFDYixXQUFvQixFQUNaLEVBQUU7SUFDVixJQUFJLGVBQWdDLENBQUM7SUFDckMsSUFBSSxJQUFZLENBQUM7SUFFakIsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzlCLGVBQWUsR0FBRyxJQUFJLHFCQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25DO1NBQU07UUFDTCxlQUFlLEdBQUcsSUFBSSxxQkFBZSxFQUFFLENBQUM7UUFDeEMsSUFBSSxHQUFHLFlBQVksQ0FBQztLQUNyQjtJQUVELElBQUksV0FBVyxFQUFFO1FBQ2YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFD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
|
package/build/utils/loon.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.getLoonNodes = void 0;
|
|
4
7
|
const logger_1 = require("@surgio/logger");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
5
9
|
const types_1 = require("../types");
|
|
6
10
|
const constant_1 = require("../constant");
|
|
7
11
|
const filter_1 = require("./filter");
|
|
8
|
-
const logger = (0, logger_1.createLogger)({ service: 'surgio:utils' });
|
|
12
|
+
const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:loon' });
|
|
9
13
|
// @see https://www.notion.so/1-9809ce5acf524d868affee8dd5fc0a6e
|
|
10
14
|
const getLoonNodes = function (list, filter) {
|
|
11
15
|
if (arguments.length === 2 && typeof filter === 'undefined') {
|
|
@@ -31,6 +35,12 @@ const getLoonNodes = function (list, filter) {
|
|
|
31
35
|
return void 0;
|
|
32
36
|
}
|
|
33
37
|
}
|
|
38
|
+
if (nodeConfig.tfo) {
|
|
39
|
+
config.push('fast-open=true');
|
|
40
|
+
}
|
|
41
|
+
if (nodeConfig['udp-relay']) {
|
|
42
|
+
config.push('udp=true');
|
|
43
|
+
}
|
|
34
44
|
return config.join(',');
|
|
35
45
|
}
|
|
36
46
|
case types_1.NodeTypeEnum.Shadowsocksr: {
|
|
@@ -40,11 +50,17 @@ const getLoonNodes = function (list, filter) {
|
|
|
40
50
|
nodeConfig.port,
|
|
41
51
|
nodeConfig.method,
|
|
42
52
|
JSON.stringify(nodeConfig.password),
|
|
43
|
-
nodeConfig.protocol
|
|
44
|
-
`{
|
|
45
|
-
nodeConfig.obfs
|
|
46
|
-
`{
|
|
53
|
+
`protocol=${nodeConfig.protocol}`,
|
|
54
|
+
`protocol-param=${nodeConfig.protoparam}`,
|
|
55
|
+
`obfs=${nodeConfig.obfs}`,
|
|
56
|
+
`obfs-param=${nodeConfig.obfsparam}`,
|
|
47
57
|
];
|
|
58
|
+
if (nodeConfig.tfo) {
|
|
59
|
+
config.push('fast-open=true');
|
|
60
|
+
}
|
|
61
|
+
if (nodeConfig['udp-relay']) {
|
|
62
|
+
config.push('udp=true');
|
|
63
|
+
}
|
|
48
64
|
return config.join(',');
|
|
49
65
|
}
|
|
50
66
|
case types_1.NodeTypeEnum.Vmess: {
|
|
@@ -56,13 +72,16 @@ const getLoonNodes = function (list, filter) {
|
|
|
56
72
|
? `method=chacha20-ietf-poly1305`
|
|
57
73
|
: `method=${nodeConfig.method}`,
|
|
58
74
|
JSON.stringify(nodeConfig.uuid),
|
|
59
|
-
`transport
|
|
75
|
+
`transport=${nodeConfig.network}`,
|
|
60
76
|
];
|
|
61
77
|
if (nodeConfig.network === 'ws') {
|
|
62
|
-
config.push(`path
|
|
78
|
+
config.push(`path=${nodeConfig.path || '/'}`, `host=${nodeConfig.host || nodeConfig.hostname}`);
|
|
79
|
+
if (Object.keys(lodash_1.default.omit(nodeConfig.wsHeaders, 'host')).length > 0) {
|
|
80
|
+
logger.warn(`Loon 不支持自定义额外的 Header 字段,节点 ${nodeConfig.nodeName} 可能不可用`);
|
|
81
|
+
}
|
|
63
82
|
}
|
|
64
83
|
if (nodeConfig.tls) {
|
|
65
|
-
config.push(`over-tls
|
|
84
|
+
config.push(`over-tls=${nodeConfig.tls}`, `tls-name=${nodeConfig.host || nodeConfig.hostname}`, `skip-cert-verify=${nodeConfig.skipCertVerify === true}`);
|
|
66
85
|
}
|
|
67
86
|
return config.join(',');
|
|
68
87
|
}
|
|
@@ -72,28 +91,41 @@ const getLoonNodes = function (list, filter) {
|
|
|
72
91
|
nodeConfig.hostname,
|
|
73
92
|
nodeConfig.port,
|
|
74
93
|
JSON.stringify(nodeConfig.password),
|
|
75
|
-
`tls-name
|
|
76
|
-
`skip-cert-verify
|
|
94
|
+
`tls-name=${nodeConfig.sni || nodeConfig.hostname}`,
|
|
95
|
+
`skip-cert-verify=${nodeConfig.skipCertVerify === true}`,
|
|
77
96
|
];
|
|
97
|
+
if (nodeConfig.network === 'ws') {
|
|
98
|
+
config.push('transport=ws', `path=${nodeConfig.wsPath || '/'}`);
|
|
99
|
+
if (nodeConfig.wsHeaders) {
|
|
100
|
+
if (lodash_1.default.get(nodeConfig, 'wsHeaders.host')) {
|
|
101
|
+
config.push(`host=${nodeConfig.wsHeaders.host}`);
|
|
102
|
+
}
|
|
103
|
+
if (Object.keys(lodash_1.default.omit(nodeConfig.wsHeaders, 'host')).length > 0) {
|
|
104
|
+
logger.warn(`Loon 不支持自定义额外的 Header 字段,节点 ${nodeConfig.nodeName} 可能不可用`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
78
108
|
return config.join(',');
|
|
79
109
|
}
|
|
80
|
-
case types_1.NodeTypeEnum.HTTPS:
|
|
81
|
-
|
|
110
|
+
case types_1.NodeTypeEnum.HTTPS: {
|
|
111
|
+
const config = [
|
|
82
112
|
`${nodeConfig.nodeName} = https`,
|
|
83
113
|
nodeConfig.hostname,
|
|
84
114
|
nodeConfig.port,
|
|
85
115
|
nodeConfig.username /* istanbul ignore next */ || '',
|
|
86
|
-
JSON.stringify(nodeConfig.password
|
|
87
|
-
|
|
88
|
-
|
|
116
|
+
JSON.stringify(nodeConfig.password /* istanbul ignore next */ || ''),
|
|
117
|
+
`tls-name=${nodeConfig.sni || nodeConfig.hostname}`,
|
|
118
|
+
`skip-cert-verify=${nodeConfig.skipCertVerify === true}`,
|
|
119
|
+
];
|
|
120
|
+
return config.join(',');
|
|
121
|
+
}
|
|
89
122
|
case types_1.NodeTypeEnum.HTTP:
|
|
90
123
|
return [
|
|
91
124
|
`${nodeConfig.nodeName} = http`,
|
|
92
125
|
nodeConfig.hostname,
|
|
93
126
|
nodeConfig.port,
|
|
94
127
|
nodeConfig.username /* istanbul ignore next */ || '',
|
|
95
|
-
JSON.stringify(nodeConfig.password
|
|
96
|
-
'""',
|
|
128
|
+
JSON.stringify(nodeConfig.password /* istanbul ignore next */ || ''),
|
|
97
129
|
].join(',');
|
|
98
130
|
// istanbul ignore next
|
|
99
131
|
default:
|
|
@@ -105,4 +137,4 @@ const getLoonNodes = function (list, filter) {
|
|
|
105
137
|
return result.join('\n');
|
|
106
138
|
};
|
|
107
139
|
exports.getLoonNodes = getLoonNodes;
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy9sb29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUE4QztBQUM5QyxvREFBdUI7QUFFdkIsb0NBS2tCO0FBQ2xCLDBDQUFpRDtBQUNqRCxxQ0FBdUM7QUFFdkMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxFQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUU5RCxnRUFBZ0U7QUFDekQsTUFBTSxZQUFZLEdBQUcsVUFDMUIsSUFBMkMsRUFDM0MsTUFBc0Q7SUFFdEQsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBa0IsQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsTUFBTSxNQUFNLEdBQTBCLElBQUEsb0JBQVcsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQzVELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBc0IsRUFBRTtRQUN0QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDdkIsS0FBSyxvQkFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLE1BQU0sR0FBMkI7b0JBQ3JDLEdBQUcsVUFBVSxDQUFDLFFBQVEsZ0JBQWdCO29CQUN0QyxVQUFVLENBQUMsUUFBUTtvQkFDbkIsVUFBVSxDQUFDLElBQUk7b0JBQ2YsVUFBVSxDQUFDLE1BQU07b0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztpQkFDcEMsQ0FBQztnQkFFRixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDN0MsTUFBTSxDQUFDLElBQUksQ0FD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
|
|
@@ -5,7 +5,12 @@ const logger_1 = require("@surgio/logger");
|
|
|
5
5
|
const _1 = require("./");
|
|
6
6
|
const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:patch-proxy' });
|
|
7
7
|
const keys = ['http_proxy', 'https_proxy', 'all_proxy'];
|
|
8
|
-
if (!(0, _1.
|
|
8
|
+
if (!(0, _1.isNow)() &&
|
|
9
|
+
!(0, _1.isHeroku)() &&
|
|
10
|
+
!(0, _1.isGitHubActions)() &&
|
|
11
|
+
!(0, _1.isGitLabCI)() &&
|
|
12
|
+
!(0, _1.isRailway)() &&
|
|
13
|
+
!(0, _1.isNetlify)()) {
|
|
9
14
|
process.env.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE = '';
|
|
10
15
|
keys.forEach((key) => {
|
|
11
16
|
if (key in process.env) {
|
|
@@ -16,4 +21,4 @@ if (!(0, _1.isHeroku)() && !(0, _1.isNow)() && !(0, _1.isGitHubActions)() && !(0
|
|
|
16
21
|
}
|
|
17
22
|
});
|
|
18
23
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtcHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvcGF0Y2gtcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVCQUF1Qjs7QUFFdkIsMkNBQThDO0FBQzlDLHlCQU9ZO0FBRVosTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxFQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztBQUNyRSxNQUFNLElBQUksR0FBMEIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRS9FLElBQ0UsQ0FBQyxJQUFBLFFBQUssR0FBRTtJQUNSLENBQUMsSUFBQSxXQUFRLEdBQUU7SUFDWCxDQUFDLElBQUEsa0JBQWUsR0FBRTtJQUNsQixDQUFDLElBQUEsYUFBVSxHQUFFO0lBQ2IsQ0FBQyxJQUFBLFlBQVMsR0FBRTtJQUNaLENBQUMsSUFBQSxZQUFTLEdBQUUsRUFDWjtJQUNBLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLEdBQUcsRUFBRSxDQUFDO0lBRTdELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNuQixJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRS9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7Q0FDSiJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HttpsNodeConfig, NodeNameFilterType, PossibleNodeConfigType, ShadowsocksNodeConfig, ShadowsocksrNodeConfig, SortedNodeNameFilterType, VmessNodeConfig } from '../types';
|
|
2
|
+
export declare const getQuantumultNodes: (list: ReadonlyArray<ShadowsocksNodeConfig | VmessNodeConfig | ShadowsocksrNodeConfig | HttpsNodeConfig>, groupName?: string, filter?: SortedNodeNameFilterType | NodeNameFilterType | undefined) => string;
|
|
3
|
+
/**
|
|
4
|
+
* @see https://github.com/crossutility/Quantumult-X/blob/master/sample.conf
|
|
5
|
+
*/
|
|
6
|
+
export declare const getQuantumultXNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: SortedNodeNameFilterType | NodeNameFilterType | undefined) => string;
|