diff --git a/lib/provider/ClashProvider.ts b/lib/provider/ClashProvider.ts index 0b18f0bad..227b4761b 100644 --- a/lib/provider/ClashProvider.ts +++ b/lib/provider/ClashProvider.ts @@ -233,7 +233,7 @@ export const parseClashConfig = ( uuid: item.uuid, alterId: item.alterId ? `${item.alterId}` : '0', method: item.cipher || 'auto', - udp: resolveUdpRelay(item.udp, udpRelay), + 'udp-relay': resolveUdpRelay(item.udp, udpRelay), tls: item.tls ?? false, network: item.network || 'tcp', ...(item.network === 'ws' ? { diff --git a/lib/provider/V2rayNSubscribeProvider.ts b/lib/provider/V2rayNSubscribeProvider.ts index 73c6dc01c..e18a1bd0e 100644 --- a/lib/provider/V2rayNSubscribeProvider.ts +++ b/lib/provider/V2rayNSubscribeProvider.ts @@ -94,7 +94,7 @@ export const getV2rayNSubscription = async ( .filter(item => item.startsWith("vmess://")); return configList - .map(item => { + .map((item): VmessNodeConfig|undefined => { const json = JSON.parse(fromBase64(item.replace('vmess://', ''))); // istanbul ignore next @@ -119,9 +119,7 @@ export const getV2rayNSubscription = async ( tls: json.tls === 'tls', host: json.host || '', path: json.path || '/', - ...(udpRelay ? { - udp: udpRelay, - } : null), + 'udp-relay': udpRelay === true, ...(json.tls === 'tls' ? { skipCertVerify: skipCertVerify ?? false, tls13: tls13 ?? false, diff --git a/lib/provider/__tests__/ClashProvider.test.ts b/lib/provider/__tests__/ClashProvider.test.ts index 4ffaff8d3..b6667e8d3 100644 --- a/lib/provider/__tests__/ClashProvider.test.ts +++ b/lib/provider/__tests__/ClashProvider.test.ts @@ -100,7 +100,7 @@ test('getClashSubscription', async t => { method: 'auto', tls: false, network: 'tcp', - udp: false, + 'udp-relay': false, }); t.deepEqual(config.shift(), { type: NodeTypeEnum.Vmess, @@ -113,7 +113,7 @@ test('getClashSubscription', async t => { alterId: '32', method: 'auto', network: 'ws', - udp: false, + 'udp-relay': false, tls: true, tls13: false, skipCertVerify: false, @@ -221,7 +221,7 @@ test('getClashSubscription udpRelay', async t => { method: 'auto', tls: false, network: 'tcp', - udp: true, + 'udp-relay': true, }); }); diff --git a/lib/provider/__tests__/V2rayNSubscribeProvider.test.ts b/lib/provider/__tests__/V2rayNSubscribeProvider.test.ts index 0c5da9b96..ebe7a3c50 100644 --- a/lib/provider/__tests__/V2rayNSubscribeProvider.test.ts +++ b/lib/provider/__tests__/V2rayNSubscribeProvider.test.ts @@ -29,6 +29,7 @@ test('getV2rayNSubscription', async t => { tls: false, type: NodeTypeEnum.Vmess, uuid: '1386f85e-657b-4d6e-9d56-78badb75e1fd', + 'udp-relay': false, }); t.deepEqual(configList[1], { alterId: '64', @@ -42,6 +43,7 @@ test('getV2rayNSubscription', async t => { tls: false, type: NodeTypeEnum.Vmess, uuid: '1386f85e-657b-4d6e-9d56-78badb75e1fd', + 'udp-relay': false, }); }); @@ -61,6 +63,7 @@ test('getV2rayNSubscription compatible mode', async t => { tls: false, type: NodeTypeEnum.Vmess, uuid: '1386f85e-657b-4d6e-9d56-78badb75e1fd', + 'udp-relay': false, }); }); @@ -80,6 +83,6 @@ test('getV2rayNSubscription udpRelay skipCertVerify', async t => { tls: false, type: NodeTypeEnum.Vmess, uuid: '1386f85e-657b-4d6e-9d56-78badb75e1fd', - udp: true, + 'udp-relay': true, }); }); diff --git a/lib/types.ts b/lib/types.ts index bed894ab6..e9455b68b 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -210,7 +210,7 @@ export interface VmessNodeConfig extends SimpleNodeConfig { readonly tls: boolean; readonly host?: string; readonly path?: string; - readonly udp?: boolean; // TODO: 统一为 udp-relay + readonly 'udp-relay'?: boolean; readonly tls13?: boolean; readonly skipCertVerify?: boolean; readonly wsHeaders?: Record; diff --git a/lib/utils/index.ts b/lib/utils/index.ts index 519d3a6a8..8a79d34ee 100644 --- a/lib/utils/index.ts +++ b/lib/utils/index.ts @@ -923,7 +923,7 @@ export const getQuantumultXNodes = function( `method=chacha20-ietf-poly1305` : `method=${nodeConfig.method}`), `password=${nodeConfig.uuid}`, - ...(nodeConfig.udp ? [ + ...(nodeConfig['udp-relay'] ? [ 'udp-relay=true', ] : []), ...(nodeConfig.tfo ? [ diff --git a/test/utils/index.test.ts b/test/utils/index.test.ts index bf418f76d..f32505735 100644 --- a/test/utils/index.test.ts +++ b/test/utils/index.test.ts @@ -1196,7 +1196,7 @@ test('getQuantumultXNodes', t => { port: 8080, tls: false, host: '', - udp: true, + 'udp-relay': true, uuid: '1386f85e-657b-4d6e-9d56-78badb75e1fd', }, { @@ -1264,7 +1264,7 @@ test('getQuantumultXNodes', t => { port: 443, tls: true, tls13: true, - udp: true, + 'udp-relay': true, uuid: '1386f85e-657b-4d6e-9d56-78badb75e1fd', }]), 'vmess=1.1.1.1:443, method=chacha20-ietf-poly1305, password=1386f85e-657b-4d6e-9d56-78badb75e1fd, udp-relay=true, obfs=over-tls, tls13=true, tag=测试'