1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-21 20:56:08 +03:00

update quic

This commit is contained in:
autumn 2022-11-24 21:07:34 +08:00
parent e86db631c5
commit 433883c3bf
18 changed files with 489 additions and 14 deletions

View File

@ -38,14 +38,16 @@ namespace ProxySuper.Core.Models.Projects
VLESS_WS_Path = "/" + Utils.RandomString(6); VLESS_WS_Path = "/" + Utils.RandomString(6);
VLESS_KCP_Type = "none"; VLESS_KCP_Type = "none";
VLESS_KCP_Seed = guid; VLESS_KCP_Seed = guid;
VLESS_QUIC_Key = "";
VLESS_QUIC_Type = "none"; VLESS_QUIC_Type = "none";
VLESS_QUIC_Security = "none"; VLESS_QUIC_Security = "none";
VLESS_QUIC_Type = "none"; VLESS_QUIC_Type = "none";
VLESS_gRPC_ServiceName = "/" + Utils.RandomString(7); VLESS_gRPC_ServiceName = Utils.RandomString(7);
VMESS_WS_Path = "/" + Utils.RandomString(8); VMESS_WS_Path = "/" + Utils.RandomString(8);
VMESS_TCP_Path = "/" + Utils.RandomString(9); VMESS_TCP_Path = "/" + Utils.RandomString(9);
VMESS_KCP_Seed = guid; VMESS_KCP_Seed = guid;
VMESS_QUIC_Key = "";
VMESS_KCP_Type = "none"; VMESS_KCP_Type = "none";
VMESS_QUIC_Security = "none"; VMESS_QUIC_Security = "none";
VMESS_QUIC_Type = "none"; VMESS_QUIC_Type = "none";
@ -98,8 +100,6 @@ namespace ProxySuper.Core.Models.Projects
} }
} }
//public ProjectType Type { get; set; } = ProjectType.Xray;
/// <summary> /// <summary>
/// 是否安装证书, /// 是否安装证书,
/// 上传自有证书时选False则不会自动安装证书。 /// 上传自有证书时选False则不会自动安装证书。

View File

@ -78,12 +78,14 @@ namespace ProxySuper.Core.Services
case RayType.VLESS_TCP_XTLS: case RayType.VLESS_TCP_XTLS:
case RayType.VLESS_WS: case RayType.VLESS_WS:
case RayType.VLESS_KCP: case RayType.VLESS_KCP:
case RayType.VLESS_QUIC:
case RayType.VLESS_gRPC: case RayType.VLESS_gRPC:
case RayType.Trojan_TCP: case RayType.Trojan_TCP:
return BuildVlessShareLink(xrayType, settings); return BuildVlessShareLink(xrayType, settings);
case RayType.VMESS_TCP: case RayType.VMESS_TCP:
case RayType.VMESS_WS: case RayType.VMESS_WS:
case RayType.VMESS_KCP: case RayType.VMESS_KCP:
case RayType.VMESS_QUIC:
return BuildVmessShareLink(xrayType, settings); return BuildVmessShareLink(xrayType, settings);
case RayType.ShadowsocksAEAD: case RayType.ShadowsocksAEAD:
return BuildShadowSocksShareLink(settings); return BuildShadowSocksShareLink(settings);
@ -142,6 +144,15 @@ namespace ProxySuper.Core.Services
vmess.path = settings.VMESS_KCP_Seed; vmess.path = settings.VMESS_KCP_Seed;
vmess.tls = ""; vmess.tls = "";
break; 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: default:
return string.Empty; return string.Empty;
} }
@ -162,8 +173,6 @@ namespace ProxySuper.Core.Services
var _path = "/"; var _path = "/";
var _host = settings.Domain; var _host = settings.Domain;
var _descriptiveText = string.Empty; var _descriptiveText = string.Empty;
var _headerType = "none";
var _seed = string.Empty;
switch (xrayType) switch (xrayType)
{ {
@ -187,12 +196,17 @@ namespace ProxySuper.Core.Services
case RayType.VLESS_KCP: case RayType.VLESS_KCP:
_protocol = "vless"; _protocol = "vless";
_type = "kcp"; _type = "kcp";
_headerType = settings.VLESS_KCP_Type;
_seed = settings.VLESS_KCP_Seed;
_port = settings.VLESS_KCP_Port; _port = settings.VLESS_KCP_Port;
_security = "none"; _security = "none";
_descriptiveText = "vless-mKCP"; _descriptiveText = "vless-mKCP";
break; break;
case RayType.VLESS_QUIC:
_protocol = "vless";
_port = settings.VLESS_QUIC_Port;
_type = "quic";
_security = "tls";
_descriptiveText = "vless-quic";
break;
case RayType.VLESS_gRPC: case RayType.VLESS_gRPC:
_protocol = "vless"; _protocol = "vless";
_type = "grpc"; _type = "grpc";
@ -213,19 +227,32 @@ namespace ProxySuper.Core.Services
if (xrayType != RayType.Trojan_TCP) if (xrayType != RayType.Trojan_TCP)
{ {
// 4.3 传输层相关段 // 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 // kcp
if (xrayType == RayType.VLESS_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 相关段 // 4.4 TLS 相关段
if (settings is XraySettings) if (settings is XraySettings)
{ {
var xraySettings = settings as XraySettings; if (xrayType == RayType.VLESS_TCP_XTLS)
parametersURL += $"&flow={xraySettings.Flow}"; {
var xraySettings = settings as XraySettings;
parametersURL += $"&flow={xraySettings.Flow}";
}
} }

View File

@ -187,6 +187,7 @@ namespace ProxySuper.Core.Services
} }
#endregion #endregion
#region VLESS GRPC
if (parameters.Types.Contains(RayType.VLESS_gRPC)) if (parameters.Types.Contains(RayType.VLESS_gRPC))
{ {
var gRPCInBound = GetBound("VLESS_gRPC.json"); var gRPCInBound = GetBound("VLESS_gRPC.json");
@ -196,7 +197,9 @@ namespace ProxySuper.Core.Services
gRPCInBound.streamSettings.tlsSettings.serverName = parameters.Domain; gRPCInBound.streamSettings.tlsSettings.serverName = parameters.Domain;
xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound)); xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound));
} }
#endregion
#region VLESS KCP
if (parameters.Types.Contains(RayType.VLESS_KCP)) if (parameters.Types.Contains(RayType.VLESS_KCP))
{ {
var kcpBound = GetBound("VLESS_KCP.json"); var kcpBound = GetBound("VLESS_KCP.json");
@ -206,7 +209,22 @@ namespace ProxySuper.Core.Services
kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed; kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed;
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); 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)) if (parameters.Types.Contains(RayType.VMESS_KCP))
{ {
var kcpBound = GetBound("VMESS_KCP.json"); var kcpBound = GetBound("VMESS_KCP.json");
@ -216,7 +234,22 @@ namespace ProxySuper.Core.Services
kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed; kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed;
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); 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)) if (parameters.Types.Contains(RayType.ShadowsocksAEAD))
{ {
var ssBound = GetBound("Shadowsocks-AEAD.json"); var ssBound = GetBound("Shadowsocks-AEAD.json");
@ -225,6 +258,7 @@ namespace ProxySuper.Core.Services
ssBound.settings.method = parameters.ShadowSocksMethod; ssBound.settings.method = parameters.ShadowSocksMethod;
xrayConfig.inbounds.Add(JToken.FromObject(ssBound)); xrayConfig.inbounds.Add(JToken.FromObject(ssBound));
} }
#endregion
return JsonConvert.SerializeObject( return JsonConvert.SerializeObject(
xrayConfig, xrayConfig,

View File

@ -110,7 +110,6 @@ namespace ProxySuper.Core.Services
}); });
} }
public static string BuildXrayConfig(XraySettings parameters) public static string BuildXrayConfig(XraySettings parameters)
{ {
var uuidList = new List<string>(); var uuidList = new List<string>();
@ -190,6 +189,7 @@ namespace ProxySuper.Core.Services
} }
#endregion #endregion
#region VLESS GRPC
if (parameters.Types.Contains(RayType.VLESS_gRPC)) if (parameters.Types.Contains(RayType.VLESS_gRPC))
{ {
var gRPCInBound = GetBound("VLESS_gRPC.json"); var gRPCInBound = GetBound("VLESS_gRPC.json");
@ -199,7 +199,9 @@ namespace ProxySuper.Core.Services
gRPCInBound.streamSettings.tlsSettings.serverName = parameters.Domain; gRPCInBound.streamSettings.tlsSettings.serverName = parameters.Domain;
xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound)); xrayConfig.inbounds.Add(JToken.FromObject(gRPCInBound));
} }
#endregion
#region VLESS KCP
if (parameters.Types.Contains(RayType.VLESS_KCP)) if (parameters.Types.Contains(RayType.VLESS_KCP))
{ {
var kcpBound = GetBound("VLESS_KCP.json"); var kcpBound = GetBound("VLESS_KCP.json");
@ -209,7 +211,22 @@ namespace ProxySuper.Core.Services
kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed; kcpBound.streamSettings.kcpSettings.seed = parameters.VLESS_KCP_Seed;
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); 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)) if (parameters.Types.Contains(RayType.VMESS_KCP))
{ {
var kcpBound = GetBound("VMESS_KCP.json"); var kcpBound = GetBound("VMESS_KCP.json");
@ -219,7 +236,22 @@ namespace ProxySuper.Core.Services
kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed; kcpBound.streamSettings.kcpSettings.seed = parameters.VMESS_KCP_Seed;
xrayConfig.inbounds.Add(JToken.FromObject(kcpBound)); 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)) if (parameters.Types.Contains(RayType.ShadowsocksAEAD))
{ {
var ssBound = GetBound("Shadowsocks-AEAD.json"); var ssBound = GetBound("Shadowsocks-AEAD.json");
@ -228,6 +260,7 @@ namespace ProxySuper.Core.Services
ssBound.settings.method = parameters.ShadowSocksMethod; ssBound.settings.method = parameters.ShadowSocksMethod;
xrayConfig.inbounds.Add(JToken.FromObject(ssBound)); xrayConfig.inbounds.Add(JToken.FromObject(ssBound));
} }
#endregion
return JsonConvert.SerializeObject( return JsonConvert.SerializeObject(
xrayConfig, xrayConfig,

View File

@ -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 public bool Checked_VLESS_gRPC
{ {
get 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 public bool Checked_Trojan_TCP
{ {
get get

View File

@ -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 public bool Checked_VLESS_gRPC
{ {
get 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 public bool Checked_Trojan_TCP
{ {
get get

View File

@ -0,0 +1,61 @@
<UserControl x:Class="ProxySuper.WPF.Controls.VLESS_QUIC_Control"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ProxySuper.WPF.Controls"
mc:Ignorable="d">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Content="地址(address)" Width="140" />
<TextBox Text="{Binding Settings.Domain}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="端口(port)" Width="140" />
<TextBox Text="{Binding Path=Settings.VLESS_KCP_Port,Mode=OneTime}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="用户ID(id)" Width="140" />
<TextBox Text="{Binding Settings.UUID}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="加密(security)" Width="140" />
<TextBox Text="none" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="传输协议(network)" Width="140" />
<TextBox Text="quic" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="伪装类型(type)" Width="140" />
<TextBox Text="{Binding Settings.VLESS_QUIC_Type}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="伪装域名(host)" Width="140" />
<TextBox Text="{Binding Settings.VLESS_QUIC_Security}" IsReadOnly="True" Width="300" />
<Label Content="QUIC加密方式" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="路径(path)" Width="140" />
<TextBox Text="{Binding Settings.VLESS_QUIC_Key}" IsReadOnly="True" Width="300" />
<Label Content="QUIC密钥" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="传输安全(tls)" Width="140" />
<TextBox Text="" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="分享链接(ShareLink)" Width="140" />
<TextBox Text="{Binding Settings.VLESS_QUIC_ShareLink,Mode=OneTime}" Width="300" IsReadOnly="True" />
</StackPanel>
</StackPanel>
</UserControl>

View File

@ -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
{
/// <summary>
/// VLESS_QUIC_Control.xaml 的交互逻辑
/// </summary>
public partial class VLESS_QUIC_Control : UserControl
{
public VLESS_QUIC_Control()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,62 @@
<UserControl x:Class="ProxySuper.WPF.Controls.VMESS_QUIC_Control"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ProxySuper.WPF.Controls"
mc:Ignorable="d">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Content="地址(address)" Width="140" />
<TextBox Text="{Binding Settings.Domain}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="端口(port)" Width="140" />
<TextBox Text="{Binding Path=Settings.VMESS_KCP_Port,Mode=OneTime}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="用户ID(id)" Width="140" />
<TextBox Text="{Binding Settings.UUID}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="加密(security)" Width="140" />
<TextBox Text="none" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="传输协议(network)" Width="140" />
<TextBox Text="quic" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="伪装类型(type)" Width="140" />
<TextBox Text="{Binding Settings.VMESS_QUIC_Type}" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="伪装域名(host)" Width="140" />
<TextBox Text="{Binding Settings.VMESS_QUIC_Security}" IsReadOnly="True" Width="300" />
<Label Content="QUIC加密方式" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="路径(path)" Width="140" />
<TextBox Text="{Binding Settings.VMESS_QUIC_Key}" IsReadOnly="True" Width="300" />
<Label Content="QUIC密钥" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="传输安全(tls)" Width="140" />
<TextBox Text="" IsReadOnly="True" Width="300" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="分享链接(ShareLink)" Width="140" />
<TextBox Text="{Binding Settings.VMESS_QUIC_ShareLink,Mode=OneTime}" Width="300" IsReadOnly="True" />
</StackPanel>
</StackPanel>
</UserControl>

View File

@ -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
{
/// <summary>
/// VMESS_QUIC_Control.xaml 的交互逻辑
/// </summary>
public partial class VMESS_QUIC_Control : UserControl
{
public VMESS_QUIC_Control()
{
InitializeComponent();
}
}
}

View File

@ -49,5 +49,5 @@ using System.Windows;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示: //通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("4.0.4.0")] [assembly: AssemblyVersion("4.1.6.0")]
[assembly: AssemblyFileVersion("4.0.4.0")] [assembly: AssemblyFileVersion("4.1.6.0")]

View File

@ -112,6 +112,9 @@
<Compile Include="Controls\VLESS_KCP_Control.xaml.cs"> <Compile Include="Controls\VLESS_KCP_Control.xaml.cs">
<DependentUpon>VLESS_KCP_Control.xaml</DependentUpon> <DependentUpon>VLESS_KCP_Control.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Controls\VLESS_QUIC_Control.xaml.cs">
<DependentUpon>VLESS_QUIC_Control.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\VLESS_TCP_TLS_Control.xaml.cs"> <Compile Include="Controls\VLESS_TCP_TLS_Control.xaml.cs">
<DependentUpon>VLESS_TCP_TLS_Control.xaml</DependentUpon> <DependentUpon>VLESS_TCP_TLS_Control.xaml</DependentUpon>
</Compile> </Compile>
@ -124,6 +127,9 @@
<Compile Include="Controls\VMESS_KCP_Control.xaml.cs"> <Compile Include="Controls\VMESS_KCP_Control.xaml.cs">
<DependentUpon>VMESS_KCP_Control.xaml</DependentUpon> <DependentUpon>VMESS_KCP_Control.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Controls\VMESS_QUIC_Control.xaml.cs">
<DependentUpon>VMESS_QUIC_Control.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\VMESS_TCP_TLS_Control.xaml.cs"> <Compile Include="Controls\VMESS_TCP_TLS_Control.xaml.cs">
<DependentUpon>VMESS_TCP_TLS_Control.xaml</DependentUpon> <DependentUpon>VMESS_TCP_TLS_Control.xaml</DependentUpon>
</Compile> </Compile>
@ -228,6 +234,10 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="Controls\VLESS_QUIC_Control.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Controls\VLESS_TCP_TLS_Control.xaml"> <Page Include="Controls\VLESS_TCP_TLS_Control.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@ -244,6 +254,10 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="Controls\VMESS_QUIC_Control.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Controls\VMESS_TCP_TLS_Control.xaml"> <Page Include="Controls\VMESS_TCP_TLS_Control.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@ -479,6 +493,9 @@
<None Include="Templates\v2ray\server\05_inbounds\VLESS_KCP.json"> <None Include="Templates\v2ray\server\05_inbounds\VLESS_KCP.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="Templates\v2ray\server\05_inbounds\VLESS_QUIC.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Templates\v2ray\server\05_inbounds\VLESS_TCP_TLS.json"> <None Include="Templates\v2ray\server\05_inbounds\VLESS_TCP_TLS.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
@ -491,6 +508,9 @@
<None Include="Templates\v2ray\server\05_inbounds\VMESS_KCP.json"> <None Include="Templates\v2ray\server\05_inbounds\VMESS_KCP.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="Templates\v2ray\server\05_inbounds\VMESS_QUIC.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Templates\v2ray\server\05_inbounds\VMESS_TCP.json"> <None Include="Templates\v2ray\server\05_inbounds\VMESS_TCP.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
@ -587,6 +607,9 @@
<None Include="Templates\xray\server\05_inbounds\VLESS_KCP.json"> <None Include="Templates\xray\server\05_inbounds\VLESS_KCP.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="Templates\xray\server\05_inbounds\VLESS_QUIC.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Templates\xray\server\05_inbounds\VLESS_TCP_XTLS.json"> <None Include="Templates\xray\server\05_inbounds\VLESS_TCP_XTLS.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
@ -599,6 +622,9 @@
<None Include="Templates\xray\server\05_inbounds\VMESS_KCP.json"> <None Include="Templates\xray\server\05_inbounds\VMESS_KCP.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="Templates\xray\server\05_inbounds\VMESS_QUIC.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Templates\xray\server\05_inbounds\VMESS_TCP.json"> <None Include="Templates\xray\server\05_inbounds\VMESS_TCP.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>

View File

@ -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"
}
]
}
}
}

View File

@ -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"
}
]
}
}
}

View File

@ -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"
}
]
}
}
}

View File

@ -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"
}
]
}
}
}

View File

@ -52,6 +52,13 @@
<ctrl:VLESS_KCP_Control /> <ctrl:VLESS_KCP_Control />
</TabItem> </TabItem>
<TabItem Width="200" Height="40"
Tag="{x:Static models:RayType.VLESS_QUIC}"
IsEnabled="{Binding Checked_VLESS_QUIC}"
Header="VLESS-Quic">
<ctrl:VLESS_QUIC_Control />
</TabItem>
<TabItem Width="200" Height="40" <TabItem Width="200" Height="40"
Tag="{x:Static models:RayType.VLESS_gRPC}" Tag="{x:Static models:RayType.VLESS_gRPC}"
IsEnabled="{Binding Checked_VLESS_gRPC}" IsEnabled="{Binding Checked_VLESS_gRPC}"
@ -73,6 +80,13 @@
<ctrl:VMESS_KCP_Control /> <ctrl:VMESS_KCP_Control />
</TabItem> </TabItem>
<TabItem Width="200" Height="40"
Tag="{x:Static models:RayType.VMESS_QUIC}"
IsEnabled="{Binding Checked_VLESS_QUIC}"
Header="VMESS-Quic">
<ctrl:VMESS_QUIC_Control />
</TabItem>
<TabItem Width="200" Height="40" <TabItem Width="200" Height="40"
Tag="{x:Static models:RayType.Trojan_TCP}" Tag="{x:Static models:RayType.Trojan_TCP}"
IsEnabled="{Binding Checked_Trojan_TCP}" IsEnabled="{Binding Checked_Trojan_TCP}"

View File

@ -88,6 +88,9 @@ namespace ProxySuper.WPF.Views
case RayType.VLESS_KCP: case RayType.VLESS_KCP:
shareLink = Settings.VLESS_KCP_ShareLink; shareLink = Settings.VLESS_KCP_ShareLink;
break; break;
case RayType.VLESS_QUIC:
shareLink = Settings.VLESS_QUIC_ShareLink;
break;
case RayType.VLESS_gRPC: case RayType.VLESS_gRPC:
shareLink = Settings.VLESS_gRPC_ShareLink; shareLink = Settings.VLESS_gRPC_ShareLink;
break; break;
@ -102,6 +105,9 @@ namespace ProxySuper.WPF.Views
case RayType.VMESS_KCP: case RayType.VMESS_KCP:
shareLink = Settings.VMESS_KCP_ShareLink; shareLink = Settings.VMESS_KCP_ShareLink;
break; break;
case RayType.VMESS_QUIC:
shareLink = Settings.VMESS_QUIC_ShareLink;
break;
case RayType.Trojan_TCP: case RayType.Trojan_TCP:
shareLink = Settings.Trojan_TCP_ShareLink; shareLink = Settings.Trojan_TCP_ShareLink;
break; break;