From 9d18e925cc020e31f94da19fbed6094e29262f3a Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Mon, 1 Apr 2024 12:14:20 +0430 Subject: [PATCH] [xray] fix: convert link to json Co-Authored-By: Alireza Ahmadi --- web/assets/js/model/outbound.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js index c3008e18..708728a8 100644 --- a/web/assets/js/model/outbound.js +++ b/web/assets/js/model/outbound.js @@ -645,7 +645,7 @@ class Outbound extends CommonClass { json.path, json.type ? json.type : 'none'); } else if (network === 'grpc') { - stream.grpc = new GrpcStreamSettings(json.path, json.type == 'multi'); + stream.grpc = new GrpcStreamSettings(json.path, json.authority, json.type == 'multi'); } else if (network === 'httpupgrade') { stream.httpupgrade = new HttpUpgradeStreamSettings(json.path,json.host); } @@ -658,20 +658,22 @@ class Outbound extends CommonClass { json.allowInsecure); } - return new Outbound(json.ps, Protocols.VMess, new Outbound.VmessSettings(json.add, json.port, json.id), stream); + const port = json.port * 1; + + return new Outbound(json.ps, Protocols.VMess, new Outbound.VmessSettings(json.add, port, json.id), stream); } static fromParamLink(link){ const url = new URL(link); - let type = url.searchParams.get('type'); + let type = url.searchParams.get('type') ?? 'tcp'; let security = url.searchParams.get('security') ?? 'none'; let stream = new StreamSettings(type, security); - let headerType = url.searchParams.get('headerType'); - let host = url.searchParams.get('host'); - let path = url.searchParams.get('path'); + let headerType = url.searchParams.get('headerType') ?? undefined; + let host = url.searchParams.get('host') ?? undefined; + let path = url.searchParams.get('path') ?? undefined; - if (type === 'tcp') { + if (type === 'tcp' || type === 'none') { stream.tcp = new TcpStreamSettings(headerType ?? 'none', host, path); } else if (type === 'kcp') { stream.kcp = new KcpStreamSettings(); @@ -686,9 +688,12 @@ class Outbound extends CommonClass { url.searchParams.get('quicSecurity') ?? 'none', url.searchParams.get('key') ?? '', headerType ?? 'none'); - } else if (type === 'grpc') { - stream.grpc = new GrpcStreamSettings(url.searchParams.get('serviceName') ?? '', url.searchParams.get('mode') == 'multi'); - } else if (type === 'httpupgrade') { + } else if (type === 'grpc') { + stream.grpc = new GrpcStreamSettings( + url.searchParams.get('serviceName') ?? '', + url.searchParams.get('authority') ?? '', + url.searchParams.get('mode') == 'multi'); + } else if (type === 'httpupgrade') { stream.httpupgrade = new HttpUpgradeStreamSettings(path,host); } @@ -709,10 +714,7 @@ class Outbound extends CommonClass { stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx); } - let data = link.split('?'); - if(data.length != 2) return null; - - const regex = /([^@]+):\/\/([^@]+)@(.+):(\d+)\?(.*)$/; + const regex = /([^@]+):\/\/([^@]+)@(.+):(\d+)(.*)$/; const match = link.match(regex); if (!match) return null;