mirror of
https://github.com/2dust/v2rayN.git
synced 2025-10-27 02:34:41 +00:00
Support for xtls-rprx-origin and xtls-rprx-direct
This commit is contained in:
parent
d6d364906f
commit
c3f27e43e9
5 changed files with 46 additions and 2 deletions
|
|
@ -43,6 +43,7 @@
|
||||||
public const string directTag = "direct";
|
public const string directTag = "direct";
|
||||||
public const string blockTag = "block";
|
public const string blockTag = "block";
|
||||||
public const string StreamSecurity = "tls";
|
public const string StreamSecurity = "tls";
|
||||||
|
public const string StreamSecurityXtls = "xtls";
|
||||||
public const string StreamSecurityReality = "reality";
|
public const string StreamSecurityReality = "reality";
|
||||||
public const string InboundSocks = "socks";
|
public const string InboundSocks = "socks";
|
||||||
public const string InboundHttp = "http";
|
public const string InboundHttp = "http";
|
||||||
|
|
@ -92,7 +93,7 @@
|
||||||
public static readonly List<string> ssSecuritys = new() { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
public static readonly List<string> ssSecuritys = new() { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
||||||
public static readonly List<string> ssSecuritysInSagerNet = new() { "none", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "rc4", "rc4-md5", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-cfb8", "aes-192-cfb8", "aes-256-cfb8", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "bf-cfb", "cast5-cfb", "des-cfb", "idea-cfb", "rc2-cfb", "seed-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", "camellia-128-cfb8", "camellia-192-cfb8", "camellia-256-cfb8", "salsa20", "chacha20", "chacha20-ietf", "xchacha20" };
|
public static readonly List<string> ssSecuritysInSagerNet = new() { "none", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "rc4", "rc4-md5", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-cfb8", "aes-192-cfb8", "aes-256-cfb8", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "bf-cfb", "cast5-cfb", "des-cfb", "idea-cfb", "rc2-cfb", "seed-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", "camellia-128-cfb8", "camellia-192-cfb8", "camellia-256-cfb8", "salsa20", "chacha20", "chacha20-ietf", "xchacha20" };
|
||||||
public static readonly List<string> ssSecuritysInXray = new() { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "none", "plain", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" };
|
public static readonly List<string> ssSecuritysInXray = new() { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "none", "plain", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" };
|
||||||
public static readonly List<string> flows = new() { "", "xtls-rprx-vision", "xtls-rprx-vision-udp443" };
|
public static readonly List<string> flows = new() { "", "xtls-rprx-vision", "xtls-rprx-vision-udp443", "xtls-rprx-direct", "xtls-rprx-origin" };
|
||||||
public static readonly List<string> networks = new() { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
public static readonly List<string> networks = new() { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
||||||
public static readonly List<string> kcpHeaderTypes = new() { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
public static readonly List<string> kcpHeaderTypes = new() { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
||||||
public static readonly List<string> coreTypes = new() { "v2fly", "SagerNet", "Xray", "v2fly_v5" };
|
public static readonly List<string> coreTypes = new() { "v2fly", "SagerNet", "Xray", "v2fly_v5" };
|
||||||
|
|
|
||||||
|
|
@ -473,7 +473,16 @@ namespace v2rayN.Handler
|
||||||
outbound.mux.concurrency = -1;
|
outbound.mux.concurrency = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (node.streamSecurity == Global.StreamSecurityXtls)
|
||||||
|
{
|
||||||
|
if (!Utils.IsNullOrEmpty(node.flow))
|
||||||
|
{
|
||||||
|
usersItem.flow = node.flow;
|
||||||
|
|
||||||
|
outbound.mux.enabled = false;
|
||||||
|
outbound.mux.concurrency = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
outbound.protocol = Global.vlessProtocolLite;
|
outbound.protocol = Global.vlessProtocolLite;
|
||||||
outbound.settings.servers = null;
|
outbound.settings.servers = null;
|
||||||
}
|
}
|
||||||
|
|
@ -574,6 +583,23 @@ namespace v2rayN.Handler
|
||||||
streamSettings.realitySettings = realitySettings;
|
streamSettings.realitySettings = realitySettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if Xtls
|
||||||
|
if (node.streamSecurity == Global.StreamSecurityXtls)
|
||||||
|
{
|
||||||
|
streamSettings.security = node.streamSecurity;
|
||||||
|
|
||||||
|
TlsSettings xtlsSettings = new()
|
||||||
|
{
|
||||||
|
fingerprint = node.fingerprint.IsNullOrEmpty() ? config.coreBasicItem.defFingerprint : node.fingerprint,
|
||||||
|
serverName = sni,
|
||||||
|
publicKey = node.publicKey,
|
||||||
|
shortId = node.shortId,
|
||||||
|
spiderX = node.spiderX,
|
||||||
|
};
|
||||||
|
|
||||||
|
streamSettings.xtlsSettings = xtlsSettings;
|
||||||
|
}
|
||||||
|
|
||||||
//streamSettings
|
//streamSettings
|
||||||
switch (node.GetNetwork())
|
switch (node.GetNetwork())
|
||||||
{
|
{
|
||||||
|
|
@ -1193,6 +1219,12 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
profileItem.streamSecurity = Global.StreamSecurity;
|
profileItem.streamSecurity = Global.StreamSecurity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//xtls
|
||||||
|
if (outbound?.streamSettings?.security == Global.StreamSecurityXtls)
|
||||||
|
{
|
||||||
|
profileItem.streamSecurity = Global.StreamSecurityXtls;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -1320,6 +1352,11 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
profileItem.streamSecurity = Global.StreamSecurity;
|
profileItem.streamSecurity = Global.StreamSecurity;
|
||||||
}
|
}
|
||||||
|
//xtls
|
||||||
|
if (inbound.streamSettings?.security == Global.StreamSecurityXtls)
|
||||||
|
{
|
||||||
|
profileItem.streamSecurity = Global.StreamSecurityXtls;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ namespace v2rayN.Mode
|
||||||
|
|
||||||
public int trayMenuServersLimit { get; set; } = 20;
|
public int trayMenuServersLimit { get; set; } = 20;
|
||||||
|
|
||||||
public bool enableHWA { get; set; } = true;
|
public bool enableHWA { get; set; } = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|
|
||||||
|
|
@ -392,6 +392,7 @@ namespace v2rayN.Mode
|
||||||
/// VLESS only
|
/// VLESS only
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TlsSettings realitySettings { get; set; }
|
public TlsSettings realitySettings { get; set; }
|
||||||
|
public TlsSettings xtlsSettings { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// grpc
|
/// grpc
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ namespace v2rayN.Views
|
||||||
case EConfigType.VLESS:
|
case EConfigType.VLESS:
|
||||||
gridVLESS.Visibility = Visibility.Visible;
|
gridVLESS.Visibility = Visibility.Visible;
|
||||||
cmbStreamSecurity.Items.Add(Global.StreamSecurityReality);
|
cmbStreamSecurity.Items.Add(Global.StreamSecurityReality);
|
||||||
|
cmbStreamSecurity.Items.Add(Global.StreamSecurityXtls);
|
||||||
Global.flows.ForEach(it =>
|
Global.flows.ForEach(it =>
|
||||||
{
|
{
|
||||||
cmbFlow5.Items.Add(it);
|
cmbFlow5.Items.Add(it);
|
||||||
|
|
@ -172,6 +173,10 @@ namespace v2rayN.Views
|
||||||
gridTlsMore.Visibility = Visibility.Hidden;
|
gridTlsMore.Visibility = Visibility.Hidden;
|
||||||
}
|
}
|
||||||
else if (security == Global.StreamSecurity)
|
else if (security == Global.StreamSecurity)
|
||||||
|
{
|
||||||
|
gridRealityMore.Visibility = Visibility.Hidden;
|
||||||
|
gridTlsMore.Visibility = Visibility.Visible;
|
||||||
|
} else if (security == Global.StreamSecurityXtls)
|
||||||
{
|
{
|
||||||
gridRealityMore.Visibility = Visibility.Hidden;
|
gridRealityMore.Visibility = Visibility.Hidden;
|
||||||
gridTlsMore.Visibility = Visibility.Visible;
|
gridTlsMore.Visibility = Visibility.Visible;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue