From 1091486877c8ee1344d0319e83bd7a66184b91e3 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Wed, 4 Nov 2020 21:50:18 +0800 Subject: [PATCH] feat: #431 --- Netch/Servers/VLESS/VLESS.cs | 8 ++- Netch/Servers/VLESS/VLESSForm/VLESSForm.cs | 7 ++- Netch/Servers/VMess/Form/VMessForm.cs | 7 ++- Netch/Servers/VMess/Utils/V2rayConfigUtils.cs | 57 +++++++++---------- Netch/Servers/VMess/VMess.cs | 18 +++++- Netch/Servers/VMess/VMessUtil.cs | 23 +++++++- 6 files changed, 80 insertions(+), 40 deletions(-) diff --git a/Netch/Servers/VLESS/VLESS.cs b/Netch/Servers/VLESS/VLESS.cs index 024a2bf0..20ea2dff 100644 --- a/Netch/Servers/VLESS/VLESS.cs +++ b/Netch/Servers/VLESS/VLESS.cs @@ -34,7 +34,6 @@ namespace Netch.Servers.VLESS public class VLESSGlobal { - public static List TransferProtocols => VMessGlobal.TransferProtocols; public static readonly List FakeTypes = new List @@ -42,5 +41,12 @@ namespace Netch.Servers.VLESS "none", "http" }; + + public static readonly List TLSSecure = new List + { + "", + "tls", + "xtls" + }; } } \ No newline at end of file diff --git a/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs b/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs index f2d10e68..8cc36792 100644 --- a/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs +++ b/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs @@ -49,9 +49,10 @@ namespace Netch.Servers.VLESS.VLESSForm _ => null }, server.UseMux?.ToString() ?? ""); - CreateCheckBox("TLSSecure", "TLS Secure", - b => server.TLSSecure = b, - server.TLSSecure); + CreateComboBox("TLSSecure", "TLS Secure", + VLESSGlobal.TLSSecure, + s => server.TLSSecureType = s, + server.TLSSecureType); } } } \ No newline at end of file diff --git a/Netch/Servers/VMess/Form/VMessForm.cs b/Netch/Servers/VMess/Form/VMessForm.cs index f268d783..d9ee27c7 100644 --- a/Netch/Servers/VMess/Form/VMessForm.cs +++ b/Netch/Servers/VMess/Form/VMessForm.cs @@ -58,9 +58,10 @@ namespace Netch.Servers.VMess.Form _ => null }, server.UseMux?.ToString() ?? ""); - CreateCheckBox("TLSSecure", "TLS Secure", - s => server.TLSSecure = s, - server.TLSSecure); + CreateComboBox("TLSSecure", "TLS Secure", + VMessGlobal.TLSSecure, + s => server.TLSSecureType = s, + server.TLSSecureType); } } } \ No newline at end of file diff --git a/Netch/Servers/VMess/Utils/V2rayConfigUtils.cs b/Netch/Servers/VMess/Utils/V2rayConfigUtils.cs index 93e278a1..c6390e1c 100644 --- a/Netch/Servers/VMess/Utils/V2rayConfigUtils.cs +++ b/Netch/Servers/VMess/Utils/V2rayConfigUtils.cs @@ -246,24 +246,37 @@ namespace Netch.Servers.VMess.Utils { streamSettings.network = server.TransferProtocol; var host = server.Host; - if (server.TLSSecure) + streamSettings.security = server.TLSSecureType; + switch (server.TLSSecureType) { - streamSettings.security = "tls"; + case "tls": + { + var tlsSettings = new TlsSettings + { + allowInsecure = Global.Settings.V2RayConfig.AllowInsecure + }; + if (!string.IsNullOrWhiteSpace(host)) + { + tlsSettings.serverName = host; + } - var tlsSettings = new TlsSettings - { - allowInsecure = Global.Settings.V2RayConfig.AllowInsecure - }; - if (!string.IsNullOrWhiteSpace(host)) - { - tlsSettings.serverName = host; + streamSettings.tlsSettings = tlsSettings; + break; } + case "xtls": + { + var xtlsSettings = new TlsSettings + { + allowInsecure = Global.Settings.V2RayConfig.AllowInsecure + }; + if (!string.IsNullOrWhiteSpace(host)) + { + xtlsSettings.serverName = host; + } - streamSettings.tlsSettings = tlsSettings; - } - else - { - streamSettings.security = ""; + streamSettings.xtlsSettings = xtlsSettings; + break; + } } switch (server.TransferProtocol) @@ -326,27 +339,13 @@ namespace Netch.Servers.VMess.Utils type = server.FakeType } }; - if (server.TLSSecure) + if (server.TLSSecureType == "tls") { streamSettings.tlsSettings.serverName = server.Hostname; } streamSettings.quicSettings = quicSettings; break; - case "xtls": - streamSettings.security = server.TransferProtocol; - - var xtlsSettings = new TlsSettings - { - allowInsecure = Global.Settings.V2RayConfig.AllowInsecure - }; - if (!string.IsNullOrWhiteSpace(host)) - { - xtlsSettings.serverName = host; - } - - streamSettings.xtlsSettings = xtlsSettings; - break; default: if (server.FakeType == "http") { diff --git a/Netch/Servers/VMess/VMess.cs b/Netch/Servers/VMess/VMess.cs index ddec844f..c0e412e6 100644 --- a/Netch/Servers/VMess/VMess.cs +++ b/Netch/Servers/VMess/VMess.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using Netch.Models; @@ -64,7 +65,13 @@ namespace Netch.Servers.VMess /// /// TLS 底层传输安全 /// - public bool TLSSecure { get; set; } = false; + [Obsolete] + public bool? TLSSecure { get; set; } + + /// + /// TLS 底层传输安全 + /// + public string TLSSecureType { get; set; } = VMessGlobal.TLSSecure[0]; /// /// Mux 多路复用 @@ -114,5 +121,14 @@ namespace Netch.Servers.VMess "dtls", "wireguard" }; + + /// + /// TLS 安全类型 + /// + public static readonly List TLSSecure = new List + { + "", + "tls" + }; } } \ No newline at end of file diff --git a/Netch/Servers/VMess/VMessUtil.cs b/Netch/Servers/VMess/VMessUtil.cs index b36b9a00..8c89c649 100644 --- a/Netch/Servers/VMess/VMessUtil.cs +++ b/Netch/Servers/VMess/VMessUtil.cs @@ -20,7 +20,24 @@ namespace Netch.Servers.VMess public Server ParseJObject(in JObject j) { - return j.ToObject(); + var server = j.ToObject(); + if (server == null) + return null; + + if (server.TLSSecure != null) + { + if ((bool) server.TLSSecure) + { + server.TLSSecureType = "tls"; + server.TLSSecure = null; + } + else + { + server.TLSSecure = null; + } + } + + return server; } public void Edit(Server s) @@ -49,7 +66,7 @@ namespace Netch.Servers.VMess type = server.FakeType, host = server.Host, path = server.Path, - tls = server.TLSSecure ? "tls" : "" + tls = server.TLSSecure }); return "vmess://" + ShareLink.URLSafeBase64Encode(vmessJson); } @@ -97,7 +114,7 @@ namespace Netch.Servers.VMess data.Path = vmess.path; } - data.TLSSecure = vmess.tls == "tls"; + data.TLSSecureType = vmess.tls; data.EncryptMethod = "auto"; // V2Ray 加密方式不包括在链接中,主动添加一个 return CheckServer(data) ? new[] {data} : null;