New - HttpUpgrade Transport

This commit is contained in:
MHSanaei
2024-03-11 11:06:33 +03:30
parent d3377cd45e
commit d18eb7e4e4
8 changed files with 164 additions and 31 deletions

View File

@@ -268,6 +268,28 @@ class GrpcStreamSettings extends CommonClass {
}
}
class HttpUpgradeStreamSettings extends CommonClass {
constructor(path='/', host='') {
super();
this.path = path;
this.host = host;
}
static fromJson(json={}) {
return new HttpUpgradeStreamSettings(
json.path,
json.Host,
);
}
toJson() {
return {
path: this.path,
host: this.host,
};
}
}
class TlsStreamSettings extends CommonClass {
constructor(serverName='',
alpn=[],
@@ -339,6 +361,7 @@ class StreamSettings extends CommonClass {
httpSettings=new HttpStreamSettings(),
quicSettings=new QuicStreamSettings(),
grpcSettings=new GrpcStreamSettings(),
httpupgradeSettings=new HttpUpgradeStreamSettings(),
) {
super();
this.network = network;
@@ -351,6 +374,7 @@ class StreamSettings extends CommonClass {
this.http = httpSettings;
this.quic = quicSettings;
this.grpc = grpcSettings;
this.httpupgrade = httpupgradeSettings;
}
get isTls() {
@@ -373,6 +397,7 @@ class StreamSettings extends CommonClass {
HttpStreamSettings.fromJson(json.httpSettings),
QuicStreamSettings.fromJson(json.quicSettings),
GrpcStreamSettings.fromJson(json.grpcSettings),
HttpUpgradeStreamSettings.fromJson(json.httpupgradeSettings),
);
}
@@ -389,6 +414,7 @@ class StreamSettings extends CommonClass {
httpSettings: network === 'http' ? this.http.toJson() : undefined,
quicSettings: network === 'quic' ? this.quic.toJson() : undefined,
grpcSettings: network === 'grpc' ? this.grpc.toJson() : undefined,
httpupgradeSettings: network === 'httpupgrade' ? this.httpupgrade.toJson() : undefined,
};
}
}
@@ -419,7 +445,7 @@ class Outbound extends CommonClass {
canEnableTls() {
if (![Protocols.VMess, Protocols.VLESS, Protocols.Trojan, Protocols.Shadowsocks].includes(this.protocol)) return false;
return ["tcp", "ws", "http", "quic", "grpc"].includes(this.stream.network);
return ["tcp", "ws", "http", "quic", "grpc", "httpupgrade"].includes(this.stream.network);
}
//this is used for xtls-rprx-vision
@@ -523,6 +549,8 @@ class Outbound extends CommonClass {
json.type ? json.type : 'none');
} else if (network === 'grpc') {
stream.grpc = new GrpcStreamSettings(json.path, json.type == 'multi');
} else if (network === 'httpupgrade') {
stream.httpupgrade = new HttpUpgradeStreamSettings(json.path,json.host);
}
if(json.tls && json.tls == 'tls'){
@@ -564,6 +592,8 @@ class Outbound extends CommonClass {
headerType ?? 'none');
} else if (type === 'grpc') {
stream.grpc = new GrpcStreamSettings(url.searchParams.get('serviceName') ?? '', url.searchParams.get('mode') == 'multi');
} else if (type === 'httpupgrade') {
stream.httpupgrade = new HttpUpgradeStreamSettings(path,host);
}
if(security == 'tls'){