mirror of
https://github.com/2dust/v2rayN.git
synced 2026-11-06 12:35:00 +03:00
Add xray hysteria2 outbound support (#8630)
This commit is contained in:
@@ -178,6 +178,18 @@ public partial class CoreConfigV2rayService
|
||||
outbound.settings.vnext = null;
|
||||
break;
|
||||
}
|
||||
case EConfigType.Hysteria2:
|
||||
{
|
||||
outbound.settings = new()
|
||||
{
|
||||
version = 2,
|
||||
address = node.Address,
|
||||
port = node.Port,
|
||||
};
|
||||
outbound.settings.vnext = null;
|
||||
outbound.settings.servers = null;
|
||||
break;
|
||||
}
|
||||
case EConfigType.WireGuard:
|
||||
{
|
||||
var address = node.Address;
|
||||
@@ -206,6 +218,10 @@ public partial class CoreConfigV2rayService
|
||||
}
|
||||
|
||||
outbound.protocol = Global.ProtocolTypes[node.ConfigType];
|
||||
if (node.ConfigType == EConfigType.Hysteria2)
|
||||
{
|
||||
outbound.protocol = "hysteria";
|
||||
}
|
||||
await GenBoundStreamSettings(node, outbound);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -246,7 +262,12 @@ public partial class CoreConfigV2rayService
|
||||
try
|
||||
{
|
||||
var streamSettings = outbound.streamSettings;
|
||||
streamSettings.network = node.GetNetwork();
|
||||
var network = node.GetNetwork();
|
||||
if (node.ConfigType == EConfigType.Hysteria2)
|
||||
{
|
||||
network = "hysteria";
|
||||
}
|
||||
streamSettings.network = network;
|
||||
var host = node.RequestHost.TrimEx();
|
||||
var path = node.Path.TrimEx();
|
||||
var sni = node.Sni.TrimEx();
|
||||
@@ -328,7 +349,7 @@ public partial class CoreConfigV2rayService
|
||||
}
|
||||
|
||||
//streamSettings
|
||||
switch (node.GetNetwork())
|
||||
switch (network)
|
||||
{
|
||||
case nameof(ETransport.kcp):
|
||||
KcpSettings4Ray kcpSettings = new()
|
||||
@@ -467,6 +488,35 @@ public partial class CoreConfigV2rayService
|
||||
streamSettings.grpcSettings = grpcSettings;
|
||||
break;
|
||||
|
||||
case "hysteria":
|
||||
HysteriaUdpHop4Ray? udpHop = null;
|
||||
if (node.Ports.IsNotEmpty() &&
|
||||
(node.Ports.Contains(':') || node.Ports.Contains('-') || node.Ports.Contains(',')))
|
||||
{
|
||||
udpHop = new()
|
||||
{
|
||||
ports = node.Ports.Replace(':', '-'),
|
||||
interval = _config.HysteriaItem.HopInterval > 0
|
||||
? _config.HysteriaItem.HopInterval
|
||||
: null,
|
||||
};
|
||||
}
|
||||
HysteriaSettings4Ray hysteriaSettings = new()
|
||||
{
|
||||
version = 2,
|
||||
auth = node.Id,
|
||||
up = _config.HysteriaItem.UpMbps > 0 ? $"{_config.HysteriaItem.UpMbps}mbps" : null,
|
||||
down = _config.HysteriaItem.DownMbps > 0 ? $"{_config.HysteriaItem.DownMbps}mbps" : null,
|
||||
udphop = udpHop,
|
||||
};
|
||||
streamSettings.hysteriaSettings = hysteriaSettings;
|
||||
if (node.Path.IsNotEmpty())
|
||||
{
|
||||
streamSettings.udpmasks =
|
||||
[new() { type = "salamander", settings = new() { password = node.Path.TrimEx(), } }];
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
//tcp
|
||||
if (node.HeaderType == Global.TcpHeaderHttp)
|
||||
|
||||
Reference in New Issue
Block a user