From 433883c3bf66816bcafbca034645045cd76c8891 Mon Sep 17 00:00:00 2001 From: autumn Date: Thu, 24 Nov 2022 21:07:34 +0800 Subject: [PATCH] update quic --- .../Models/Projects/V2raySettings.cs | 6 +- ProxySuper.Core/Services/ShareLink.cs | 43 ++++++++++--- .../Services/V2rayConfigBuilder.cs | 34 ++++++++++ ProxySuper.Core/Services/XrayConfigBuilder.cs | 35 ++++++++++- .../ViewModels/V2rayConfigViewModel.cs | 16 +++++ .../ViewModels/XrayConfigViewModel.cs | 16 +++++ .../Controls/VLESS_QUIC_Control.xaml | 61 ++++++++++++++++++ .../Controls/VLESS_QUIC_Control.xaml.cs | 28 +++++++++ .../Controls/VMESS_QUIC_Control.xaml | 62 +++++++++++++++++++ .../Controls/VMESS_QUIC_Control.xaml.cs | 28 +++++++++ ProxySuper.WPF/Properties/AssemblyInfo.cs | 4 +- ProxySuper.WPF/ProxySuper.WPF.csproj | 26 ++++++++ .../v2ray/server/05_inbounds/VLESS_QUIC.json | 31 ++++++++++ .../v2ray/server/05_inbounds/VMESS_QUIC.json | 31 ++++++++++ .../xray/server/05_inbounds/VLESS_QUIC.json | 31 ++++++++++ .../xray/server/05_inbounds/VMESS_QUIC.json | 31 ++++++++++ ProxySuper.WPF/Views/Xray/XrayConfigView.xaml | 14 +++++ .../Views/Xray/XrayConfigView.xaml.cs | 6 ++ 18 files changed, 489 insertions(+), 14 deletions(-) create mode 100644 ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml create mode 100644 ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml.cs create mode 100644 ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml create mode 100644 ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml.cs create mode 100644 ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VLESS_QUIC.json create mode 100644 ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VMESS_QUIC.json create mode 100644 ProxySuper.WPF/Templates/xray/server/05_inbounds/VLESS_QUIC.json create mode 100644 ProxySuper.WPF/Templates/xray/server/05_inbounds/VMESS_QUIC.json diff --git a/ProxySuper.Core/Models/Projects/V2raySettings.cs b/ProxySuper.Core/Models/Projects/V2raySettings.cs index a57f250..ed95c10 100644 --- a/ProxySuper.Core/Models/Projects/V2raySettings.cs +++ b/ProxySuper.Core/Models/Projects/V2raySettings.cs @@ -38,14 +38,16 @@ namespace ProxySuper.Core.Models.Projects VLESS_WS_Path = "/" + Utils.RandomString(6); VLESS_KCP_Type = "none"; VLESS_KCP_Seed = guid; + VLESS_QUIC_Key = ""; VLESS_QUIC_Type = "none"; VLESS_QUIC_Security = "none"; VLESS_QUIC_Type = "none"; - VLESS_gRPC_ServiceName = "/" + Utils.RandomString(7); + VLESS_gRPC_ServiceName = Utils.RandomString(7); VMESS_WS_Path = "/" + Utils.RandomString(8); VMESS_TCP_Path = "/" + Utils.RandomString(9); VMESS_KCP_Seed = guid; + VMESS_QUIC_Key = ""; VMESS_KCP_Type = "none"; VMESS_QUIC_Security = "none"; VMESS_QUIC_Type = "none"; @@ -98,8 +100,6 @@ namespace ProxySuper.Core.Models.Projects } } - //public ProjectType Type { get; set; } = ProjectType.Xray; - /// /// 是否安装证书, /// 上传自有证书时选False,则不会自动安装证书。 diff --git a/ProxySuper.Core/Services/ShareLink.cs b/ProxySuper.Core/Services/ShareLink.cs index 326df69..4edf80e 100644 --- a/ProxySuper.Core/Services/ShareLink.cs +++ b/ProxySuper.Core/Services/ShareLink.cs @@ -78,12 +78,14 @@ namespace ProxySuper.Core.Services case RayType.VLESS_TCP_XTLS: case RayType.VLESS_WS: case RayType.VLESS_KCP: + case RayType.VLESS_QUIC: case RayType.VLESS_gRPC: case RayType.Trojan_TCP: return BuildVlessShareLink(xrayType, settings); case RayType.VMESS_TCP: case RayType.VMESS_WS: case RayType.VMESS_KCP: + case RayType.VMESS_QUIC: return BuildVmessShareLink(xrayType, settings); case RayType.ShadowsocksAEAD: return BuildShadowSocksShareLink(settings); @@ -142,6 +144,15 @@ namespace ProxySuper.Core.Services vmess.path = settings.VMESS_KCP_Seed; vmess.tls = ""; break; + case RayType.VMESS_QUIC: + vmess.ps = "vmess-quic"; + vmess.port = settings.VMESS_QUIC_Port.ToString(); + vmess.net = "quic"; + vmess.type = settings.VMESS_QUIC_Type; + vmess.path = settings.VMESS_QUIC_Key; + vmess.host = settings.VMESS_QUIC_Security; + vmess.tls = "tls"; + break; default: return string.Empty; } @@ -162,8 +173,6 @@ namespace ProxySuper.Core.Services var _path = "/"; var _host = settings.Domain; var _descriptiveText = string.Empty; - var _headerType = "none"; - var _seed = string.Empty; switch (xrayType) { @@ -187,12 +196,17 @@ namespace ProxySuper.Core.Services case RayType.VLESS_KCP: _protocol = "vless"; _type = "kcp"; - _headerType = settings.VLESS_KCP_Type; - _seed = settings.VLESS_KCP_Seed; _port = settings.VLESS_KCP_Port; _security = "none"; _descriptiveText = "vless-mKCP"; break; + case RayType.VLESS_QUIC: + _protocol = "vless"; + _port = settings.VLESS_QUIC_Port; + _type = "quic"; + _security = "tls"; + _descriptiveText = "vless-quic"; + break; case RayType.VLESS_gRPC: _protocol = "vless"; _type = "grpc"; @@ -213,19 +227,32 @@ namespace ProxySuper.Core.Services if (xrayType != RayType.Trojan_TCP) { // 4.3 传输层相关段 - parametersURL = $"?type={_type}&encryption={_encryption}&security={_security}&path={HttpUtility.UrlEncode(_path)}&headerType={_headerType}"; + parametersURL = $"?type={_type}&encryption={_encryption}&security={_security}&path={HttpUtility.UrlEncode(_path)}"; // kcp if (xrayType == RayType.VLESS_KCP) { - parametersURL += $"&seed={_seed}"; + parametersURL += $"&seed={settings.VLESS_KCP_Seed}&headerType={settings.VLESS_KCP_Type}"; + } + + if (xrayType == RayType.VLESS_QUIC) + { + parametersURL += $"&quicSecurity={settings.VLESS_QUIC_Security}"; + if (settings.VLESS_QUIC_Security != "none") + { + parametersURL += $"&key={HttpUtility.UrlEncode(settings.VLESS_QUIC_Key)}"; + } + parametersURL += $"&headerType={settings.VLESS_QUIC_Type}"; } // 4.4 TLS 相关段 if (settings is XraySettings) { - var xraySettings = settings as XraySettings; - parametersURL += $"&flow={xraySettings.Flow}"; + if (xrayType == RayType.VLESS_TCP_XTLS) + { + var xraySettings = settings as XraySettings; + parametersURL += $"&flow={xraySettings.Flow}"; + } } diff --git a/ProxySuper.Core/Services/V2rayConfigBuilder.cs b/ProxySuper.Core/Services/V2rayConfigBuilder.cs index c450b5f..9a54e55 100644 --- a/ProxySuper.Core/Services/V2rayConfigBuilder.cs +++ b/ProxySuper.Core/Services/V2rayConfigBuilder.cs @@ -187,6 +187,7 @@ namespace ProxySuper.Core.Services } #endregion + #region VLESS GRPC if (parameters.Types.Contains(RayType.VLESS_gRPC)) { var gRPCInBound = GetBound("VLESS_gRPC.json"); @@ -196,7 +197,9 @@ namespace ProxySuper.Core.Services gRPCInBound.streamSettings.tlsSettings.serverName = parameters.Domain; xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound)); } + #endregion + #region VLESS KCP if (parameters.Types.Contains(RayType.VLESS_KCP)) { var kcpBound = GetBound("VLESS_KCP.json"); @@ -206,7 +209,22 @@ namespace ProxySuper.Core.Services kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed; xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); } + #endregion + #region VLESS QUIC + if (parameters.Types.Contains(RayType.VLESS_QUIC)) + { + var quicBound = GetBound("VLESS_QUIC.json"); + quicBound.port = parameters.VLESS_QUIC_Port; + SetClients(quicBound, uuidList); + quicBound.streamSettings.quicSettings.security = parameters.VLESS_QUIC_Security; + quicBound.streamSettings.quicSettings.key = parameters.VLESS_QUIC_Key; + quicBound.streamSettings.quicSettings.header.type = parameters.VLESS_QUIC_Type; + xrayConfig.inbounds.Add(JToken.FromObject(quicBound)); + } + #endregion + + #region VMESS KCP if (parameters.Types.Contains(RayType.VMESS_KCP)) { var kcpBound = GetBound("VMESS_KCP.json"); @@ -216,7 +234,22 @@ namespace ProxySuper.Core.Services kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed; xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); } + #endregion + #region VMESS QUIC + if (parameters.Types.Contains(RayType.VMESS_QUIC)) + { + var quicBound = GetBound("VMESS_QUIC.json"); + quicBound.port = parameters.VMESS_QUIC_Port; + SetClients(quicBound, uuidList); + quicBound.streamSettings.quicSettings.security = parameters.VMESS_QUIC_Security; + quicBound.streamSettings.quicSettings.key = parameters.VMESS_QUIC_Key; + quicBound.streamSettings.quicSettings.header.type = parameters.VMESS_QUIC_Type; + xrayConfig.inbounds.Add(JToken.FromObject(quicBound)); + } + #endregion + + #region Shadowsocks if (parameters.Types.Contains(RayType.ShadowsocksAEAD)) { var ssBound = GetBound("Shadowsocks-AEAD.json"); @@ -225,6 +258,7 @@ namespace ProxySuper.Core.Services ssBound.settings.method = parameters.ShadowSocksMethod; xrayConfig.inbounds.Add(JToken.FromObject(ssBound)); } + #endregion return JsonConvert.SerializeObject( xrayConfig, diff --git a/ProxySuper.Core/Services/XrayConfigBuilder.cs b/ProxySuper.Core/Services/XrayConfigBuilder.cs index c7d5096..83fd110 100644 --- a/ProxySuper.Core/Services/XrayConfigBuilder.cs +++ b/ProxySuper.Core/Services/XrayConfigBuilder.cs @@ -110,7 +110,6 @@ namespace ProxySuper.Core.Services }); } - public static string BuildXrayConfig(XraySettings parameters) { var uuidList = new List(); @@ -190,6 +189,7 @@ namespace ProxySuper.Core.Services } #endregion + #region VLESS GRPC if (parameters.Types.Contains(RayType.VLESS_gRPC)) { var gRPCInBound = GetBound("VLESS_gRPC.json"); @@ -199,7 +199,9 @@ namespace ProxySuper.Core.Services gRPCInBound.streamSettings.tlsSettings.serverName = parameters.Domain; xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound)); } + #endregion + #region VLESS KCP if (parameters.Types.Contains(RayType.VLESS_KCP)) { var kcpBound = GetBound("VLESS_KCP.json"); @@ -209,7 +211,22 @@ namespace ProxySuper.Core.Services kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed; xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); } + #endregion + #region VLESS QUIC + if (parameters.Types.Contains(RayType.VLESS_QUIC)) + { + var quicBound = GetBound("VLESS_QUIC.json"); + quicBound.port = parameters.VLESS_QUIC_Port; + SetClients(quicBound, uuidList); + quicBound.streamSettings.quicSettings.security = parameters.VLESS_QUIC_Security; + quicBound.streamSettings.quicSettings.key = parameters.VLESS_QUIC_Key; + quicBound.streamSettings.quicSettings.header.type = parameters.VLESS_QUIC_Type; + xrayConfig.inbounds.Add(JToken.FromObject(quicBound)); + } + #endregion + + #region VMESS KCP if (parameters.Types.Contains(RayType.VMESS_KCP)) { var kcpBound = GetBound("VMESS_KCP.json"); @@ -219,7 +236,22 @@ namespace ProxySuper.Core.Services kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed; xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); } + #endregion + #region VMESS QUIC + if (parameters.Types.Contains(RayType.VMESS_QUIC)) + { + var quicBound = GetBound("VMESS_QUIC.json"); + quicBound.port = parameters.VMESS_QUIC_Port; + SetClients(quicBound, uuidList); + quicBound.streamSettings.quicSettings.security = parameters.VMESS_QUIC_Security; + quicBound.streamSettings.quicSettings.key = parameters.VMESS_QUIC_Key; + quicBound.streamSettings.quicSettings.header.type = parameters.VMESS_QUIC_Type; + xrayConfig.inbounds.Add(JToken.FromObject(quicBound)); + } + #endregion + + #region Shadowsocks if (parameters.Types.Contains(RayType.ShadowsocksAEAD)) { var ssBound = GetBound("Shadowsocks-AEAD.json"); @@ -228,6 +260,7 @@ namespace ProxySuper.Core.Services ssBound.settings.method = parameters.ShadowSocksMethod; xrayConfig.inbounds.Add(JToken.FromObject(ssBound)); } + #endregion return JsonConvert.SerializeObject( xrayConfig, diff --git a/ProxySuper.Core/ViewModels/V2rayConfigViewModel.cs b/ProxySuper.Core/ViewModels/V2rayConfigViewModel.cs index f381366..6dc287d 100644 --- a/ProxySuper.Core/ViewModels/V2rayConfigViewModel.cs +++ b/ProxySuper.Core/ViewModels/V2rayConfigViewModel.cs @@ -42,6 +42,14 @@ namespace ProxySuper.Core.ViewModels } } + public bool Checked_VLESS_QUIC + { + get + { + return Settings.Types.Contains(RayType.VLESS_QUIC); + } + } + public bool Checked_VLESS_gRPC { get @@ -74,6 +82,14 @@ namespace ProxySuper.Core.ViewModels } } + public bool Checked_VMESS_QUIC + { + get + { + return Settings.Types.Contains(RayType.VMESS_QUIC); + } + } + public bool Checked_Trojan_TCP { get diff --git a/ProxySuper.Core/ViewModels/XrayConfigViewModel.cs b/ProxySuper.Core/ViewModels/XrayConfigViewModel.cs index a12d890..7d25e5e 100644 --- a/ProxySuper.Core/ViewModels/XrayConfigViewModel.cs +++ b/ProxySuper.Core/ViewModels/XrayConfigViewModel.cs @@ -55,6 +55,14 @@ namespace ProxySuper.Core.ViewModels } } + public bool Checked_VLESS_QUIC + { + get + { + return Settings.Types.Contains(RayType.VLESS_QUIC); + } + } + public bool Checked_VLESS_gRPC { get @@ -87,6 +95,14 @@ namespace ProxySuper.Core.ViewModels } } + public bool Checked_VMESS_QUIC + { + get + { + return Settings.Types.Contains(RayType.VMESS_QUIC); + } + } + public bool Checked_Trojan_TCP { get diff --git a/ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml b/ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml new file mode 100644 index 0000000..c768db8 --- /dev/null +++ b/ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml.cs b/ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml.cs new file mode 100644 index 0000000..ad59f4f --- /dev/null +++ b/ProxySuper.WPF/Controls/VLESS_QUIC_Control.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ProxySuper.WPF.Controls +{ + /// + /// VLESS_QUIC_Control.xaml 的交互逻辑 + /// + public partial class VLESS_QUIC_Control : UserControl + { + public VLESS_QUIC_Control() + { + InitializeComponent(); + } + } +} diff --git a/ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml b/ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml new file mode 100644 index 0000000..9258605 --- /dev/null +++ b/ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml.cs b/ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml.cs new file mode 100644 index 0000000..c0e0fcd --- /dev/null +++ b/ProxySuper.WPF/Controls/VMESS_QUIC_Control.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ProxySuper.WPF.Controls +{ + /// + /// VMESS_QUIC_Control.xaml 的交互逻辑 + /// + public partial class VMESS_QUIC_Control : UserControl + { + public VMESS_QUIC_Control() + { + InitializeComponent(); + } + } +} diff --git a/ProxySuper.WPF/Properties/AssemblyInfo.cs b/ProxySuper.WPF/Properties/AssemblyInfo.cs index b463edc..69453d3 100644 --- a/ProxySuper.WPF/Properties/AssemblyInfo.cs +++ b/ProxySuper.WPF/Properties/AssemblyInfo.cs @@ -49,5 +49,5 @@ using System.Windows; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.0.4.0")] -[assembly: AssemblyFileVersion("4.0.4.0")] +[assembly: AssemblyVersion("4.1.6.0")] +[assembly: AssemblyFileVersion("4.1.6.0")] diff --git a/ProxySuper.WPF/ProxySuper.WPF.csproj b/ProxySuper.WPF/ProxySuper.WPF.csproj index 16e36ae..af10d5b 100644 --- a/ProxySuper.WPF/ProxySuper.WPF.csproj +++ b/ProxySuper.WPF/ProxySuper.WPF.csproj @@ -112,6 +112,9 @@ VLESS_KCP_Control.xaml + + VLESS_QUIC_Control.xaml + VLESS_TCP_TLS_Control.xaml @@ -124,6 +127,9 @@ VMESS_KCP_Control.xaml + + VMESS_QUIC_Control.xaml + VMESS_TCP_TLS_Control.xaml @@ -228,6 +234,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -244,6 +254,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -479,6 +493,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -491,6 +508,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -587,6 +607,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -599,6 +622,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VLESS_QUIC.json b/ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VLESS_QUIC.json new file mode 100644 index 0000000..4003ae5 --- /dev/null +++ b/ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VLESS_QUIC.json @@ -0,0 +1,31 @@ +{ + "port": 2000, + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "quic", + "quicSettings": { + "security": "none", + "key": "", + "header": { + "type": "none" + } + }, + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" + } + ] + } + } +} \ No newline at end of file diff --git a/ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VMESS_QUIC.json b/ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VMESS_QUIC.json new file mode 100644 index 0000000..15fcea1 --- /dev/null +++ b/ProxySuper.WPF/Templates/v2ray/server/05_inbounds/VMESS_QUIC.json @@ -0,0 +1,31 @@ +{ + "port": 3000, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": "" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "quic", + "quicSettings": { + "security": "none", + "key": "", + "header": { + "type": "none" + } + }, + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" + } + ] + } + } +} \ No newline at end of file diff --git a/ProxySuper.WPF/Templates/xray/server/05_inbounds/VLESS_QUIC.json b/ProxySuper.WPF/Templates/xray/server/05_inbounds/VLESS_QUIC.json new file mode 100644 index 0000000..5ee61b5 --- /dev/null +++ b/ProxySuper.WPF/Templates/xray/server/05_inbounds/VLESS_QUIC.json @@ -0,0 +1,31 @@ +{ + "port": 2000, + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "quic", + "quicSettings": { + "security": "none", + "key": "", + "header": { + "type": "none" + } + }, + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/xray/ssl/xray_ssl.crt", + "keyFile": "/usr/local/etc/xray/ssl/xray_ssl.key" + } + ] + } + } +} \ No newline at end of file diff --git a/ProxySuper.WPF/Templates/xray/server/05_inbounds/VMESS_QUIC.json b/ProxySuper.WPF/Templates/xray/server/05_inbounds/VMESS_QUIC.json new file mode 100644 index 0000000..3722cc6 --- /dev/null +++ b/ProxySuper.WPF/Templates/xray/server/05_inbounds/VMESS_QUIC.json @@ -0,0 +1,31 @@ +{ + "port": 3000, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": "" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "quic", + "quicSettings": { + "security": "none", + "key": "", + "header": { + "type": "none" + } + }, + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/xray/ssl/xray_ssl.crt", + "keyFile": "/usr/local/etc/xray/ssl/xray_ssl.key" + } + ] + } + } +} \ No newline at end of file diff --git a/ProxySuper.WPF/Views/Xray/XrayConfigView.xaml b/ProxySuper.WPF/Views/Xray/XrayConfigView.xaml index a9a9625..c90dcd4 100644 --- a/ProxySuper.WPF/Views/Xray/XrayConfigView.xaml +++ b/ProxySuper.WPF/Views/Xray/XrayConfigView.xaml @@ -52,6 +52,13 @@ + + + + + + + +