1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-22 21:26:09 +03:00
ProxySU/ProxySU/XayTemplateWindow.xaml.cs

1147 lines
43 KiB
C#
Raw Normal View History

2020-11-26 16:07:35 +03:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Shapes;
//using System.Windows.Forms;
namespace ProxySU
{
/// <summary>
/// WindowTemplateConfiguration.xaml 的交互逻辑
/// </summary>
public partial class XrayWindowTemplateConfiguration : Window
{
//QUIC 加密方法
public class EncryptionMethodInfo
{
public string Name { get; set; }
public string Value { get; set; }
}
public XrayWindowTemplateConfiguration()
{
InitializeComponent();
#region chacha20-poly1305
List<EncryptionMethodInfo> methodList = new List<EncryptionMethodInfo>();
methodList.Add(new EncryptionMethodInfo { Name = "chacha20-poly1305", Value = "chacha20-poly1305" });
methodList.Add(new EncryptionMethodInfo { Name = "aes-128-gcm", Value = "aes-128-gcm" });
methodList.Add(new EncryptionMethodInfo { Name = "none", Value = "none" });
ComboBoxEncryptionMethodInfo.ItemsSource = methodList;
ComboBoxEncryptionMethodInfo.DisplayMemberPath = "Name";//显示出来的值
ComboBoxEncryptionMethodInfo.SelectedValuePath = "Value";//实际选中后获取的结果的值
ComboBoxEncryptionMethodInfo.SelectedIndex = 0;
DataContext = this;
#endregion
//隐藏QUIC密钥
FirstQuicHideEncryption();
RadioButtonVMESSmKCP.IsChecked = true;
}
//取消不在当前活动选项卡中的其他所有选项卡中的所有RadioBuuton的选中状态
//代码参考网址https://blog.csdn.net/weixin_42583999/article/details/103468857
//调用UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
private void UncheckLayouts(TabItem activePage)
{
foreach (TabItem tabPage in TabControlTemplate.Items)
{
if (tabPage == activePage) continue;
Grid grid = (Grid)tabPage.Content;
foreach (UIElement element in grid.Children)
{
if (element is RadioButton)
{
RadioButton radiobutton = (element as RadioButton);
radiobutton.IsChecked = false;
}
}
}
}
//传递所选择的参数与模板方案
private void ButtondDecide_Click(object sender, RoutedEventArgs e)
{
bool preDomainMask = ClassModel.PreDomainMask(TextBoxMaskSites.Text);
bool domainNotEmpty = true;
#region TCP (VMESS)
//TCP模式被选中
if (RadioButtonTCP.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "TCP";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTCP.Content.ToString();
}
//TCP+http伪装模式被选中
else if (RadioButtonTCPhttp.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "TCPhttp";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTCPhttp.Content.ToString();
//伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "http";
}
//TCP+TLS模式被选中
else if (RadioButtonTCP2TLS.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "tcpTLS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTCP2TLS.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
}
//tcp+TLS(自签证书)模式被选中
else if (RadioButtonTcpTLS2SelfSigned.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "tcpTLSselfSigned";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTcpTLS2SelfSigned.Content.ToString();
//传递域名
// MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
}
#endregion
#region VLESS协议
//VLESS+TCP+XTLS+Web模式选中
else if (RadioButtonVlessXtlsTcp.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "VlessXtlsTcp";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessXtlsTcp.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//VLESS+TCP+TLS+Web模式选中
else if (RadioButtonVlessTcpTlsWeb.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "VlessTcpTlsWeb";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessTcpTlsWeb.Content.ToString();
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//VLESS+WebSocket+TLS+Web模式选中
else if (RadioButtonVlessWebSocketTlsWeb.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "VlessWebSocketTlsWeb";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessWebSocketTlsWeb.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//VLESS+http2+TLS+Web模式选中
else if (RadioButtonVlessHttp2Web.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "VlessHttp2Web";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessHttp2Web.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//VLESS+VMESS+Trojan+XTLS+TCP+WebSocket+Web模式被选中
else if (RadioButtonVlessVmessXtlsTcpWebSocketHot.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "VlessVmessXtlsTcpWebSocketWeb";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessVmessXtlsTcpWebSocketHot.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[3] = PreTrim(TextBoxPathVlessWS.Text);//VLESS ws Path
MainWindow.ReceiveConfigurationParameters[9] = PreTrim(TextBoxPathVmessTcp.Text);//VMESS tcp Path
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPathVmessWS.Text);//VMESS ws Path
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递混淆方式(VMESS TCP Path方式所用)
MainWindow.ReceiveConfigurationParameters[5] = "http";
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
#endregion
#region WebSocket传输协议(VMESS)
//webSocket模式被选中
else if (RadioButtonWebSocket.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "webSocket";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocket.Content.ToString();
}
//WebSocket+TLS模式被选中
else if (RadioButtonWebSocketTLS.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLS.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
}
//WebSocket+TLS+Web模式被选中
else if (RadioButtonWebSocketTLS2Web.IsChecked == true|| RadioButtonWebSocketTLS2WebHot.IsChecked==true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLS2Web";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLS2Web.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//WebSocket+TLS(自签证书)模式被选中
else if (RadioButtonWebSocketTLSselfSigned.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "WebSocketTLSselfSigned";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLSselfSigned.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
//MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
}
#endregion
#region http2传输协议(VMESS)
//http2模式被选中
else if (RadioButtonHTTP2.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "Http2";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
}
//http2+TLS+Web模式被选中
else if (RadioButtonHTTP2Web.IsChecked == true || RadioButtonHTTP2WebHot.IsChecked == true)
{
domainNotEmpty = ClassModel.TestDomainIsEmpty(TextBoxDomain.Text);
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "http2Web";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2Web.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
//传递伪装网站
MainWindow.ReceiveConfigurationParameters[7] = ClassModel.DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text));
}
//http2(自签证书)模式被选中
else if (RadioButtonHTTP2selfSigned.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "http2selfSigned";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2selfSigned.Content.ToString();
//传递路径
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text);
//传递域名
//MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text);
}
#endregion
#region mKCP (VMESS)
//mKCP无伪装模式被选中
else if (RadioButtonMkcpNone.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "mKCPNone";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonMkcpNone.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "none";
//传递mKCP Seed
if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) ==false)
{
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
}
}
//mKCP+srtp伪装模式被选中
else if (RadioButton2mKCP2SRTP.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "mKCP2SRTP";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2SRTP.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "srtp";
//传递mKCP Seed
if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false)
{
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
}
}
//mKCP+utp伪装模式被选中
else if (RadioButton2mKCPuTP.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "mKCPuTP";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCPuTP.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "utp";
//传递mKCP Seed
if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false)
{
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
}
}
//mKCP+wechat-video伪装模式被选中
else if (RadioButton2mKCP2WechatVideo.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "mKCP2WechatVideo";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2WechatVideo.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "wechat-video";
//传递mKCP Seed
if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false)
{
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
}
}
//mKCP+dtls伪装模式被选中
else if (RadioButton2mKCP2DTLS.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "mKCP2DTLS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2DTLS.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "dtls";
//传递mKCP Seed
if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false)
{
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
}
}
//mKCP+wireguard伪装模式被选中
else if (RadioButton2mKCP2WireGuard.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "mKCP2WireGuard";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButton2mKCP2WireGuard.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "wireguard";
//传递mKCP Seed
if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false)
{
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
}
}
#endregion
#region QUIC传输协议(VMESS)
//QUIC无伪装模式被选中
else if (RadioButtonQuicNone.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "QuicNone";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicNone.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "none";
//QUIC 密钥
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
//QUIC加密方法
MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS();
}
//QUIC+srtp伪装模式被选中
else if (RadioButtonQuicSRTP.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "QuicSRTP";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicSRTP.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "srtp";
//QUIC 密钥
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
//QUIC加密方法
MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS();
}
//QUIC+utp伪装模式被选中
else if (RadioButtonQuic2uTP.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "Quic2uTP";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuic2uTP.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "utp";
//QUIC 密钥
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
//QUIC加密方法
MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS();
}
//QUIC+wechat-video伪装模式被选中
else if (RadioButtonQuicWechatVideo.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "QuicWechatVideo";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicWechatVideo.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "wechat-video";
//QUIC 密钥
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
//QUIC加密方法
MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS();
}
//QUIC+dtls伪装模式被选中
else if (RadioButtonQuicDTLS.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "QuicDTLS";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicDTLS.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "dtls";
//QUIC 密钥
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
//QUIC加密方法
MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS();
}
//QUIC+wireguard伪装模式被选中
else if (RadioButtonQuicWireGuard.IsChecked == true)
{
//传递模板类型
MainWindow.ReceiveConfigurationParameters[0] = "QuicWireGuard";
//传递方案名称
MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicWireGuard.Content.ToString();
//传递伪装类型
MainWindow.ReceiveConfigurationParameters[5] = "wireguard";
//QUIC 密钥
MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text);
//QUIC加密方法
MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS();
}
#endregion
//传递服务端口
MainWindow.ReceiveConfigurationParameters[1] = PreTrim(TextBoxServerListenPort.Text);
//传递uuid
MainWindow.ReceiveConfigurationParameters[2] = PreTrim(TextBoxNewUUID.Text);
if (RadioButtonVLESSmKCP.IsChecked == true)
{
MainWindow.mKCPvlessIsSet = true;
}
else
{
MainWindow.mKCPvlessIsSet = false;
}
if (domainNotEmpty == true && preDomainMask == true)
{
this.Close();
}
}
//取消选择返回主窗口
private void ButtondCancel_Click(object sender, RoutedEventArgs e) => Close();
//伪装网站处理
//DisguiseURLprocessing(string fakeUrl);
// private string DisguiseURLprocessing(string fakeUrl)
//{
//var uri = new Uri(fakeUrl);
//return uri.Host;
//Console.WriteLine(uri.Host);
////处理伪装网站域名中的前缀
//if (fakeUrl.Length >= 7)
//{
// string testDomainMask = fakeUrl.Substring(0, 7);
// if (String.Equals(testDomainMask, "https:/") || String.Equals(testDomainMask, "http://"))
// {
// string[] tmpUrl = fakeUrl.Split('/');
// fakeUrl = tmpUrl[2];
// }
//}
//}
#region
private void RadioButtonTCP_Checked(object sender, RoutedEventArgs e)
{
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//隐藏域名
HideDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//Random random = new Random();
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonTCPhttp_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "80";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//隐藏域名
HideDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonTCP2TLS_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//显示域名
ShowDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonVlessTcpTlsWeb_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//显示域名
ShowDomain();
//显示伪装网站
ShowMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonVlessVmessXtlsTcpWebSocketHot_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//显示复合路径
ShowVlessVmessMultiplePath();
//显示域名
ShowDomain();
//显示伪装网站
ShowMaskSites();
//生成UUID
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
//单击TextBlockVlessVmessXtlsTcpWebSocket标签则选中RadioButtonVlessVmessXtlsTcpWebSocketHot
private void TextBlockVlessVmessXtlsTcpWebSocket_MouseDown(object sender, MouseButtonEventArgs e)
{
RadioButtonVlessVmessXtlsTcpWebSocketHot.IsChecked = true;
}
private void RadioButtonTCP2TLSnoDomain_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//隐藏域名
HideDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonWebSocketTLS2Web_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//显示Path
ShowPath();
//显示域名
ShowDomain();
//显示伪装网站
ShowMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonWebSocketTLSselfSigned_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//显示Path
ShowPath();
//隐藏域名
HideDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
private void RadioButtonHTTP2_Checked(object sender, RoutedEventArgs e)
{
TextBoxServerListenPort.Text = "443";
//隐藏mKCP项
HideMkcpSeed();
//隐藏QUIC密钥
HideQuic();
//显示Path
ShowPath();
//显示域名
ShowDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
//mKCP显示界面
private void RadioButtonMkcp_Checked(object sender, RoutedEventArgs e)
{
//隐藏QUIC密钥
HideQuic();
//显示mKCP Seed
ShowMkcpSeed();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//隐藏域名
HideDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//uuid = Guid.NewGuid();
TextBoxQuicAndMkcpSeedUUID.Text = GenerateRandomUUID();
//Random random = new Random();
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
//QUIC显示界面
private void RadioButtonQuicNone_Checked(object sender, RoutedEventArgs e)
{
//隐藏mKCP项
HideMkcpSeed();
//显示QUIC密钥
ShowQuic();
//隐藏Path
HidePath();
HideVlessVmessMultiplePath();
//隐藏域名
HideDomain();
//隐藏伪装网站
HideMaskSites();
//Guid uuid = Guid.NewGuid();
TextBoxNewUUID.Text = GenerateRandomUUID();
//uuid = Guid.NewGuid();
TextBoxQuicAndMkcpSeedUUID.Text = GenerateRandomUUID();
//Random random = new Random();
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
//清除其他选项卡中的选项
UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
}
//隐藏QUIC相关项
private void HideQuic()
{
TextBlockQuicUUID.Visibility = Visibility.Collapsed;
TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Collapsed;
ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Collapsed;
TextBlockQuicEncryption.Visibility = Visibility.Collapsed;
ComboBoxEncryptionMethodInfo.Visibility = Visibility.Collapsed;
//TextBlockMkcpUUID.Visibility = Visibility.Collapsed;
}
//如果加密方法选择none则隐藏只QUIC密钥
private void NoneEncryptionHideQuicKey()
{
TextBlockQuicUUID.Visibility = Visibility.Collapsed;
TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Collapsed;
ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Collapsed;
}
//窗口初始化时需要做一次隐藏QUIC加密方法
private void FirstQuicHideEncryption()
{
TextBlockQuicEncryption.Visibility = Visibility.Collapsed;
ComboBoxEncryptionMethodInfo.Visibility = Visibility.Collapsed;
}
//显示QUIC相关项
private void ShowQuic()
{
TextBlockQuicUUID.Visibility = Visibility.Visible;
TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Visible;
ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Visible;
TextBlockQuicEncryption.Visibility = Visibility.Visible;
ComboBoxEncryptionMethodInfo.Visibility = Visibility.Visible;
//隐藏mKCP相关项
TextBlockMkcpSeedUUID.Visibility = Visibility.Collapsed;
TextBlockMkcpUUID.Visibility = Visibility.Collapsed;
}
//隐藏mKCP Seed相关项
private void HideMkcpSeed()
{
TextBlockMkcpSeedUUID.Visibility = Visibility.Collapsed;
TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Collapsed;
ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Collapsed;
TextBlockMkcpUUID.Visibility = Visibility.Collapsed;
}
//显示mKCP Seed相关项
private void ShowMkcpSeed()
{
TextBlockMkcpSeedUUID.Visibility = Visibility.Visible;
TextBoxQuicAndMkcpSeedUUID.Visibility = Visibility.Visible;
ButtonQuicAndmKcpSeedUUID.Visibility = Visibility.Visible;
TextBlockMkcpUUID.Visibility = Visibility.Visible;
//隐藏QUIC标示
TextBlockQuicUUID.Visibility = Visibility.Collapsed;
}
//隐藏路径相关项
private void HidePath()
{
//隐藏Path
TextBlockPath.Visibility = Visibility.Collapsed;
TextBoxPath.Visibility = Visibility.Collapsed;
ButtonPath.Visibility = Visibility.Collapsed;
}
//显示路径相关项
private void ShowPath()
{
HideVlessVmessMultiplePath();//隐藏VLESS VMESS多种方案的路径Path
//显示Path
TextBlockPath.Visibility = Visibility.Visible;
TextBoxPath.Visibility = Visibility.Visible;
TextBoxPath.Text = "/ray";
ButtonPath.Visibility = Visibility.Visible;
}
//隐藏VLESS VMESS复合方案路径
private void HideVlessVmessMultiplePath()
{
TextBlockPathVlessWs.Visibility = Visibility.Collapsed;
TextBoxPathVlessWS.Visibility = Visibility.Collapsed;
TextBlockPathVmessTcp.Visibility = Visibility.Collapsed;
TextBoxPathVmessTcp.Visibility = Visibility.Collapsed;
TextBlockPathVmessWs.Visibility = Visibility.Collapsed;
TextBoxPathVmessWS.Visibility = Visibility.Collapsed;
ButtonVlessVmessPath.Visibility = Visibility.Collapsed;
TextBlockTrojanPassword.Visibility = Visibility.Collapsed;
}
//显示VLESS VMESS复合方案路径
private void ShowVlessVmessMultiplePath()
{
HidePath();//隐藏普通路径Path
TextBlockPathVlessWs.Visibility = Visibility.Visible;
TextBoxPathVlessWS.Visibility = Visibility.Visible;
TextBoxPathVlessWS.Text = "/vlessws";
TextBlockPathVmessTcp.Visibility = Visibility.Visible;
TextBoxPathVmessTcp.Visibility = Visibility.Visible;
TextBoxPathVmessTcp.Text = "/vmesstcp";
TextBlockPathVmessWs.Visibility = Visibility.Visible;
TextBoxPathVmessWS.Visibility = Visibility.Visible;
TextBoxPathVmessWS.Text = "/vmessws";
ButtonVlessVmessPath.Visibility = Visibility.Visible;
TextBlockTrojanPassword.Visibility = Visibility.Visible;
}
//隐藏域名相关项
private void HideDomain()
{
//隐藏域名
TextBlockDomain.Visibility = Visibility.Collapsed;
TextBoxDomain.Visibility = Visibility.Collapsed;
ButtonDomain.Visibility = Visibility.Collapsed;
}
//显示域名相关项
private void ShowDomain()
{
//显示域名
TextBlockDomain.Visibility = Visibility.Visible;
TextBoxDomain.Visibility = Visibility.Visible;
//ButtonDomain.Visibility = Visibility.Visible;
}
//隐藏伪装网站
private void HideMaskSites()
{
TextBlockMaskSites.Visibility = Visibility.Collapsed;
TextBoxMaskSites.Visibility = Visibility.Collapsed;
}
//显示伪装网站
private void ShowMaskSites()
{
TextBlockMaskSites.Visibility = Visibility.Visible;
TextBoxMaskSites.Visibility = Visibility.Visible;
}
#endregion
//产生随机的uuid
private void ButtonNewUUID_Click(object sender, RoutedEventArgs e)
{
TextBoxNewUUID.Text = GenerateRandomUUID();
}
//产生QUIC密钥/mKCP Seed所用的UUID
private void ButtonQuicAndMkcpSeedUUID_Click(object sender, RoutedEventArgs e)
{
TextBoxQuicAndMkcpSeedUUID.Text = GenerateRandomUUID();
}
//更新随机服务端口
private void ButtonServerListenPort_Click(object sender, RoutedEventArgs e)
{
int randomServerPort = GetRandomPort();
TextBoxServerListenPort.Text = randomServerPort.ToString();
}
//更新单方案随机的Path
private void ButtonPath_Click(object sender, RoutedEventArgs e)
{
string path = GenerateRandomPath();
TextBoxPath.Text = $"/{path}";
}
//更新多方案共存的Path
private void ButtonVlessVmessPath_Click(object sender, RoutedEventArgs e)
{
string path = GenerateRandomPath();
TextBoxPathVlessWS.Text = $"/{path}";
path = GenerateRandomPath();
TextBoxPathVmessTcp.Text = $"/{path}";
path = GenerateRandomPath();
TextBoxPathVmessWS.Text = $"/{path}";
}
//TextBox输入内容做预处理
private string PreTrim(string preString)
{
return preString.Trim();
}
//生成随机端口
private int GetRandomPort()
{
Random random = new Random();
return random.Next(10001, 60000);
}
//生成随机UUID
private string GenerateRandomUUID()
{
Guid uuid = Guid.NewGuid();
return uuid.ToString();
}
//生成随机Path
private string GenerateRandomPath()
{
Random random = new Random();
int randomSerialNum = random.Next(0, 4);
//Guid uuid = Guid.NewGuid();
string uuid = GenerateRandomUUID();
string[] pathArray = uuid.Split('-');
string path = pathArray[randomSerialNum];
return path;
}
//域名检测是否为空
//private bool TestDomainIsEmpty()
//{
// if (string.IsNullOrEmpty(PreTrim(TextBoxDomain.Text)) == true)
// {
// //****** "域名不能为空,请检查相关参数设置!" ******
// MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString());
// return false;
// }
// else
// {
// return true;
// }
//}
//加密方法更改后的动作
private void ComboBoxEncryptionMethodInfo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string getMethond = GetEncryptionMethodSS();
//传递加密方式
MainWindow.ReceiveConfigurationParameters[3] = getMethond;
if (String.Equals(getMethond,"none"))
{
NoneEncryptionHideQuicKey();
}
else
{
ShowQuic();
}
}
//读取加密方式
private string GetEncryptionMethodSS()
{
return ComboBoxEncryptionMethodInfo.SelectedValue.ToString();
}
private void ButtonDomain_Click(object sender, RoutedEventArgs e)
{
}
//private void ButtonTestChecked_Click(object sender, RoutedEventArgs e)
//{
// UncheckLayouts((TabItem)TabControlTemplate.SelectedItem);
//}
}
}