|
@@ -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;
|