[xray] fix: convert link to json

Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
This commit is contained in:
mhsanaei 2024-04-01 12:14:20 +04:30
parent 21d988133e
commit 9d18e925cc

View file

@ -645,7 +645,7 @@ class Outbound extends CommonClass {
json.path, json.path,
json.type ? json.type : 'none'); json.type ? json.type : 'none');
} else if (network === 'grpc') { } 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') { } else if (network === 'httpupgrade') {
stream.httpupgrade = new HttpUpgradeStreamSettings(json.path,json.host); stream.httpupgrade = new HttpUpgradeStreamSettings(json.path,json.host);
} }
@ -658,20 +658,22 @@ class Outbound extends CommonClass {
json.allowInsecure); 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){ static fromParamLink(link){
const url = new URL(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 security = url.searchParams.get('security') ?? 'none';
let stream = new StreamSettings(type, security); let stream = new StreamSettings(type, security);
let headerType = url.searchParams.get('headerType'); let headerType = url.searchParams.get('headerType') ?? undefined;
let host = url.searchParams.get('host'); let host = url.searchParams.get('host') ?? undefined;
let path = url.searchParams.get('path'); let path = url.searchParams.get('path') ?? undefined;
if (type === 'tcp') { if (type === 'tcp' || type === 'none') {
stream.tcp = new TcpStreamSettings(headerType ?? 'none', host, path); stream.tcp = new TcpStreamSettings(headerType ?? 'none', host, path);
} else if (type === 'kcp') { } else if (type === 'kcp') {
stream.kcp = new KcpStreamSettings(); stream.kcp = new KcpStreamSettings();
@ -687,7 +689,10 @@ class Outbound extends CommonClass {
url.searchParams.get('key') ?? '', url.searchParams.get('key') ?? '',
headerType ?? 'none'); headerType ?? 'none');
} else if (type === 'grpc') { } else if (type === 'grpc') {
stream.grpc = new GrpcStreamSettings(url.searchParams.get('serviceName') ?? '', url.searchParams.get('mode') == 'multi'); stream.grpc = new GrpcStreamSettings(
url.searchParams.get('serviceName') ?? '',
url.searchParams.get('authority') ?? '',
url.searchParams.get('mode') == 'multi');
} else if (type === 'httpupgrade') { } else if (type === 'httpupgrade') {
stream.httpupgrade = new HttpUpgradeStreamSettings(path,host); stream.httpupgrade = new HttpUpgradeStreamSettings(path,host);
} }
@ -709,10 +714,7 @@ class Outbound extends CommonClass {
stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx); stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx);
} }
let data = link.split('?'); const regex = /([^@]+):\/\/([^@]+)@(.+):(\d+)(.*)$/;
if(data.length != 2) return null;
const regex = /([^@]+):\/\/([^@]+)@(.+):(\d+)\?(.*)$/;
const match = link.match(regex); const match = link.match(regex);
if (!match) return null; if (!match) return null;