From 754aff18a452ce0840a85c3cbccdb9b8b845997c Mon Sep 17 00:00:00 2001 From: next-autumn Date: Fri, 26 Mar 2021 18:13:32 +0800 Subject: [PATCH] refactoring --- ProxySU_Core/Converters/VisibleConverter.cs | 34 ++ .../Models/Developers/ConfigBuilder.cs | 10 +- ProxySU_Core/Models/ShareLink.cs | 27 +- ProxySU_Core/Models/XraySettings.cs | 92 ++-- ProxySU_Core/ProxySU_Core.csproj | 21 +- .../server/05_inbounds/Shadowsocks-AEAD.json | 13 + .../{Trojan_TCP_TLS.json => Trojan_TCP.json} | 0 .../{Trojan_WS_TLS.json => Trojan_WS.json} | 0 ...{VLESS_HTTP2_TLS.json => VLESS_HTTP2.json} | 0 .../{VLESS_mKCP.json => VLESS_KCP.json} | 0 .../{VLESS_WS_TLS.json => VLESS_WS.json} | 0 ...{VMESS_HTTP2_TLS.json => VMESS_HTTP2.json} | 0 .../{VMESS_mKCP.json => VMESS_KCP.json} | 0 .../{VMESS_TCP_TLS.json => VMESS_TCP.json} | 0 .../{VMESS_WS_TLS.json => VMESS_WS.json} | 0 ProxySU_Core/ViewModels/IdValueViewModel.cs | 21 + .../ViewModels/XraySettingsViewModel.cs | 409 ++++++++---------- ProxySU_Core/Views/ClientInfoWindow.xaml | 6 +- ProxySU_Core/Views/RecordEditorWindow.xaml | 120 ++++- ProxySU_Core/Views/RecordEditorWindow.xaml.cs | 1 + 20 files changed, 424 insertions(+), 330 deletions(-) create mode 100644 ProxySU_Core/Converters/VisibleConverter.cs create mode 100644 ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json rename ProxySU_Core/Templates/xray/server/05_inbounds/{Trojan_TCP_TLS.json => Trojan_TCP.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{Trojan_WS_TLS.json => Trojan_WS.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VLESS_HTTP2_TLS.json => VLESS_HTTP2.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VLESS_mKCP.json => VLESS_KCP.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VLESS_WS_TLS.json => VLESS_WS.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VMESS_HTTP2_TLS.json => VMESS_HTTP2.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VMESS_mKCP.json => VMESS_KCP.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VMESS_TCP_TLS.json => VMESS_TCP.json} (100%) rename ProxySU_Core/Templates/xray/server/05_inbounds/{VMESS_WS_TLS.json => VMESS_WS.json} (100%) create mode 100644 ProxySU_Core/ViewModels/IdValueViewModel.cs diff --git a/ProxySU_Core/Converters/VisibleConverter.cs b/ProxySU_Core/Converters/VisibleConverter.cs new file mode 100644 index 0000000..f52a08d --- /dev/null +++ b/ProxySU_Core/Converters/VisibleConverter.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Data; + +namespace ProxySU_Core.Converters +{ + public class VisibleConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value.Equals(true) ? Visibility.Visible : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + { + return false; + } + + if (value.Equals(Visibility.Visible)) + { + return true; + } + + return false; + } + } +} diff --git a/ProxySU_Core/Models/Developers/ConfigBuilder.cs b/ProxySU_Core/Models/Developers/ConfigBuilder.cs index 0d0e502..1f7bcee 100644 --- a/ProxySU_Core/Models/Developers/ConfigBuilder.cs +++ b/ProxySU_Core/Models/Developers/ConfigBuilder.cs @@ -104,7 +104,7 @@ namespace ProxySU_Core.Models.Developers xrayConfig.inbounds.Add(baseBound); baseBound.settings.clients[0].id = parameters.UUID; - if (parameters.Types.Contains(XrayType.VLESS_WS_TLS)) + if (parameters.Types.Contains(XrayType.VLESS_WS)) { var wsInbound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VLESS_WS_TLS.json")); wsInbound.port = VLESS_WS_Port; @@ -136,7 +136,7 @@ namespace ProxySU_Core.Models.Developers - if (parameters.Types.Contains(XrayType.VMESS_TCP_TLS)) + if (parameters.Types.Contains(XrayType.VMESS_TCP)) { var mtcpBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VMESS_TCP_TLS.json")); mtcpBound.port = VMESS_TCP_Port; @@ -151,7 +151,7 @@ namespace ProxySU_Core.Models.Developers xrayConfig.inbounds.Add(JToken.FromObject(mtcpBound)); } - if (parameters.Types.Contains(XrayType.VMESS_WS_TLS)) + if (parameters.Types.Contains(XrayType.VMESS_WS)) { var mwsBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VMESS_WS_TLS.json")); mwsBound.port = VMESS_WS_Port; @@ -166,7 +166,7 @@ namespace ProxySU_Core.Models.Developers xrayConfig.inbounds.Add(JToken.FromObject(mwsBound)); } - if (parameters.Types.Contains(XrayType.Trojan_TCP_TLS)) + if (parameters.Types.Contains(XrayType.Trojan_TCP)) { var trojanTcpBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "Trojan_TCP_TLS.json")); trojanTcpBound.port = Trojan_TCP_Port; @@ -179,7 +179,7 @@ namespace ProxySU_Core.Models.Developers xrayConfig.inbounds.Add(JToken.FromObject(trojanTcpBound)); } - if (parameters.Types.Contains(XrayType.Trojan_WS_TLS)) { } + if (parameters.Types.Contains(XrayType.Trojan_WS)) { } return JsonConvert.SerializeObject( xrayConfig, diff --git a/ProxySU_Core/Models/ShareLink.cs b/ProxySU_Core/Models/ShareLink.cs index dec2823..9283682 100644 --- a/ProxySU_Core/Models/ShareLink.cs +++ b/ProxySU_Core/Models/ShareLink.cs @@ -15,13 +15,13 @@ namespace ProxySU_Core.Models { switch (xrayType) { - case XrayType.VLESS_TCP_TLS: + case XrayType.VLESS_TCP: case XrayType.VLESS_TCP_XTLS: - case XrayType.VLESS_WS_TLS: - case XrayType.Trojan_TCP_TLS: + case XrayType.VLESS_WS: + case XrayType.Trojan_TCP: return BuildVlessShareLink(xrayType, settings); - case XrayType.VMESS_TCP_TLS: - case XrayType.VMESS_WS_TLS: + case XrayType.VMESS_TCP: + case XrayType.VMESS_WS: return BuildVmessShareLink(xrayType, settings); default: return string.Empty; @@ -49,13 +49,13 @@ namespace ProxySU_Core.Models switch (xrayType) { - case XrayType.VMESS_TCP_TLS: + case XrayType.VMESS_TCP: vmess.ps = "vmess-tcp-tls"; vmess.net = "tcp"; vmess.type = "http"; vmess.path = settings.VMESS_TCP_Path; break; - case XrayType.VMESS_WS_TLS: + case XrayType.VMESS_WS: vmess.ps = "vmess-ws-tls"; vmess.net = "ws"; vmess.type = "none"; @@ -84,10 +84,9 @@ namespace ProxySU_Core.Models switch (xrayType) { - case XrayType.VLESS_TCP_TLS: + case XrayType.VLESS_TCP: _protocol = "vless"; _type = "tcp"; - _path = settings.VLESS_TCP_Path; _encryption = "none"; _descriptiveText = "vless-tcp-tls"; break; @@ -98,28 +97,28 @@ namespace ProxySU_Core.Models _encryption = "none"; _descriptiveText = "vless-tcp-xtls"; break; - case XrayType.VLESS_WS_TLS: + case XrayType.VLESS_WS: _protocol = "vless"; _type = "ws"; _path = settings.VLESS_WS_Path; _encryption = "none"; _descriptiveText = "vless-ws-tls"; break; - case XrayType.VMESS_TCP_TLS: + case XrayType.VMESS_TCP: _protocol = "vmess"; _type = "tcp"; _path = settings.VMESS_TCP_Path; _encryption = "auto"; _descriptiveText = "vmess-tcp-tls"; break; - case XrayType.VMESS_WS_TLS: + case XrayType.VMESS_WS: _protocol = "vmess"; _type = "ws"; _path = settings.VMESS_WS_Path; _encryption = "auto"; _descriptiveText = "vmess-ws-tls"; break; - case XrayType.Trojan_TCP_TLS: + case XrayType.Trojan_TCP: _protocol = "trojan"; _descriptiveText = "trojan-tcp"; break; @@ -129,7 +128,7 @@ namespace ProxySU_Core.Models string parametersURL = string.Empty; - if (xrayType != XrayType.Trojan_TCP_TLS) + if (xrayType != XrayType.Trojan_TCP) { // 4.3 传输层相关段 parametersURL = $"?type={_type}&encryption={_encryption}&security={_security}&host={_host}&path={HttpUtility.UrlEncode(_path)}"; diff --git a/ProxySU_Core/Models/XraySettings.cs b/ProxySU_Core/Models/XraySettings.cs index d045e2c..fcea1fb 100644 --- a/ProxySU_Core/Models/XraySettings.cs +++ b/ProxySU_Core/Models/XraySettings.cs @@ -19,14 +19,21 @@ namespace ProxySU_Core.Models Port = 443; UUID = guid; Types = new List(); + VLESS_WS_Path = "/vlessws"; - VLESS_TCP_Path = "/vlesstcp"; VLESS_H2_Path = "/vlessh2"; + VMESS_WS_Path = "/vmessws"; VMESS_TCP_Path = "/vmesstcp"; VMESS_H2_Path = "/vmessh2"; + VMESS_KCP_Seed = guid; + VMESS_KCP_Type = "none"; + TrojanPassword = guid; Trojan_WS_Path = "/trojanws"; + + ShadowsocksPassword = guid; + ShadowsocksMethod = "aes-128-gcm"; } /// @@ -39,26 +46,19 @@ namespace ProxySU_Core.Models /// public string UUID { get; set; } + #region vless /// /// vless ws路径 /// public string VLESS_WS_Path { get; set; } - /// - /// vless tcp路径 - /// - public string VLESS_TCP_Path { get; set; } - /// /// vless http2 path /// public string VLESS_H2_Path { get; set; } + #endregion - /// - /// vless mKcp seed - /// - public string VLESS_mKCP_Seed { get; set; } - + #region vmess /// /// vmess ws路径 /// @@ -75,10 +75,17 @@ namespace ProxySU_Core.Models public string VMESS_H2_Path { get; set; } /// - /// vmess mKcp seed + /// vmess kcp seed /// - public string VMESS_mKCP_Seed { get; set; } + public string VMESS_KCP_Seed { get; set; } + /// + /// vmess kcp type + /// + public string VMESS_KCP_Type { get; set; } + #endregion + + #region Trojan /// /// trojan密码 /// @@ -88,6 +95,20 @@ namespace ProxySU_Core.Models /// trojan ws path /// public string Trojan_WS_Path { get; set; } + #endregion + + #region ShadowsocksAEAD + /// + /// ss password + /// + public string ShadowsocksPassword { get; set; } + + /// + /// ss method + /// + public string ShadowsocksMethod { get; set; } + #endregion + /// /// 域名 @@ -109,26 +130,24 @@ namespace ProxySU_Core.Models { switch (type) { - case XrayType.VLESS_TCP_TLS: - return VLESS_TCP_Path; - case XrayType.VLESS_TCP_XTLS: - return VLESS_TCP_Path; - case XrayType.VLESS_WS_TLS: + case XrayType.VLESS_WS: return VLESS_WS_Path; - case XrayType.VLESS_H2_TLS: + case XrayType.VLESS_H2: return VLESS_H2_Path; - case XrayType.VMESS_TCP_TLS: + case XrayType.VMESS_TCP: return VMESS_TCP_Path; - case XrayType.VMESS_WS_TLS: + case XrayType.VMESS_WS: return VMESS_WS_Path; - case XrayType.Trojan_WS_TLS: + case XrayType.Trojan_WS: return Trojan_WS_Path; // no path - case XrayType.VLESS_mKCP_Speed: - case XrayType.Trojan_TCP_TLS: - case XrayType.VMESS_mKCP_Speed: + case XrayType.VLESS_TCP_XTLS: + case XrayType.VLESS_TCP: + case XrayType.VLESS_KCP: + case XrayType.VMESS_KCP: + case XrayType.Trojan_TCP: return string.Empty; default: return string.Empty; @@ -144,19 +163,22 @@ namespace ProxySU_Core.Models VLESS_TCP_XTLS = 100, // vless 101开头 - VLESS_TCP_TLS = 101, - VLESS_WS_TLS = 102, - VLESS_H2_TLS = 103, - VLESS_mKCP_Speed = 104, + VLESS_TCP = 101, + VLESS_WS = 102, + VLESS_H2 = 103, + VLESS_KCP = 104, // vmess 201开头 - VMESS_TCP_TLS = 201, - VMESS_WS_TLS = 202, - VMESS_H2_TLS = 203, - VMESS_mKCP_Speed = 204, + VMESS_TCP = 201, + VMESS_WS = 202, + VMESS_H2 = 203, + VMESS_KCP = 204, // trojan 301开头 - Trojan_TCP_TLS = 301, - Trojan_WS_TLS = 302, + Trojan_TCP = 301, + Trojan_WS = 302, + + // ss + ShadowsocksAEAD = 401 } } diff --git a/ProxySU_Core/ProxySU_Core.csproj b/ProxySU_Core/ProxySU_Core.csproj index c4f6a22..45af54e 100644 --- a/ProxySU_Core/ProxySU_Core.csproj +++ b/ProxySU_Core/ProxySU_Core.csproj @@ -122,6 +122,7 @@ + @@ -138,6 +139,7 @@ + @@ -241,34 +243,35 @@ PreserveNewest - + + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json b/ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json new file mode 100644 index 0000000..5b18d5c --- /dev/null +++ b/ProxySU_Core/Templates/xray/server/05_inbounds/Shadowsocks-AEAD.json @@ -0,0 +1,13 @@ +{ + "port": 12345, + "protocol": "shadowsocks", + "settings": { + "clients": [ + { + "password": "example_user_1", + "method": "aes-128-gcm" + } + ], + "network": "tcp,udp" + } +} \ No newline at end of file diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_TCP.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/Trojan_WS.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_HTTP2.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_mKCP.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_KCP.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_mKCP.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_KCP.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VLESS_WS.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_HTTP2.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_mKCP.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_KCP.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_mKCP.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_KCP.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_TCP.json diff --git a/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS_TLS.json b/ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS.json similarity index 100% rename from ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS_TLS.json rename to ProxySU_Core/Templates/xray/server/05_inbounds/VMESS_WS.json diff --git a/ProxySU_Core/ViewModels/IdValueViewModel.cs b/ProxySU_Core/ViewModels/IdValueViewModel.cs new file mode 100644 index 0000000..d7b8fbf --- /dev/null +++ b/ProxySU_Core/ViewModels/IdValueViewModel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProxySU_Core.ViewModels +{ + public class IdValueViewModel + { + public IdValueViewModel(int id, string value) + { + Id = id; + Value = value; + } + + public int Id { get; set; } + + public string Value { get; set; } + } +} diff --git a/ProxySU_Core/ViewModels/XraySettingsViewModel.cs b/ProxySU_Core/ViewModels/XraySettingsViewModel.cs index 3f81ca1..8525b34 100644 --- a/ProxySU_Core/ViewModels/XraySettingsViewModel.cs +++ b/ProxySU_Core/ViewModels/XraySettingsViewModel.cs @@ -3,21 +3,24 @@ using ProxySU_Core.Common; using ProxySU_Core.Models; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Windows; +using System.Windows.Controls; namespace ProxySU_Core.ViewModels { - public class XraySettingsViewModel : BaseViewModel + public partial class XraySettingsViewModel : BaseViewModel { public XraySettings settings; public XraySettingsViewModel(XraySettings parameters) { this.settings = parameters; + Notify("VMESS_KCP_Type"); } public string UUID @@ -42,299 +45,225 @@ namespace ProxySU_Core.ViewModels set => settings.MaskDomain = value; } - public string VLESS_TCP_Path - { - get => settings.VLESS_TCP_Path; - set => settings.VLESS_TCP_Path = value; - } - - public string VLESS_WS_Path - { - get => settings.VLESS_WS_Path; - set => settings.VLESS_WS_Path = value; - } - - public string VLESS_H2_Path - { - get => settings.VLESS_H2_Path; - set => settings.VLESS_H2_Path = value; - } - - public string VMESS_TCP_Path - { - get => settings.VMESS_TCP_Path; - set => settings.VMESS_TCP_Path = value; - } - - public string VMESS_WS_Path - { - get => settings.VMESS_WS_Path; - set => settings.VMESS_WS_Path = value; - } - - public string VMESS_H2_Path - { - get => settings.VMESS_H2_Path; - set => settings.VMESS_H2_Path = value; - } public string TrojanPassword { get => settings.TrojanPassword; set => settings.TrojanPassword = value; } - - public bool Checked_VLESS_TCP - { - get - { - return settings.Types.Contains(XrayType.VLESS_TCP_TLS); - } - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VLESS_TCP_TLS)) - settings.Types.Add(XrayType.VLESS_TCP_TLS); - - } - else - { - settings.Types.Remove(XrayType.VLESS_TCP_TLS); - } - Notify("Checked_VLESS_TCP"); - Notify("VLESS_TCP_Path_Visibility"); - } - } - - public bool Checked_VLESS_XTLS - { - get - { - return settings.Types.Contains(XrayType.VLESS_TCP_XTLS); - } - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VLESS_TCP_XTLS)) - settings.Types.Add(XrayType.VLESS_TCP_XTLS); - } - else - { - settings.Types.Remove(XrayType.VLESS_TCP_XTLS); - } - Notify("Checked_VLESS_XTLS"); - } - } - - public bool Checked_VLESS_WS - { - get - { - return settings.Types.Contains(XrayType.VLESS_WS_TLS); - } - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VLESS_WS_TLS)) - settings.Types.Add(XrayType.VLESS_WS_TLS); - } - else - { - settings.Types.Remove(XrayType.VLESS_WS_TLS); - } - Notify("Checked_VLESS_WS"); - Notify("VLESS_WS_Path_Visibility"); - } - } - - public bool Checked_VLESS_H2 - { - get => settings.Types.Contains(XrayType.VLESS_H2_TLS); - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VLESS_H2_TLS)) - settings.Types.Add(XrayType.VLESS_H2_TLS); - } - else - { - settings.Types.Remove(XrayType.VLESS_H2_TLS); - } - Notify("Checked_VLESS_H2"); - Notify("VLESS_H2_Path_Visibility"); - } - } - - public bool Checked_VMESS_TCP - { - get - { - return settings.Types.Contains(XrayType.VMESS_TCP_TLS); - } - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VMESS_TCP_TLS)) - settings.Types.Add(XrayType.VMESS_TCP_TLS); - } - else - { - settings.Types.Remove(XrayType.VMESS_TCP_TLS); - } - Notify("Checked_VMESS_TCP"); - Notify("VMESS_TCP_Path_Visibility"); - } - } - - public bool Checked_VMESS_WS - { - get - { - return settings.Types.Contains(XrayType.VMESS_WS_TLS); - } - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VMESS_WS_TLS)) - settings.Types.Add(XrayType.VMESS_WS_TLS); - } - else - { - settings.Types.Remove(XrayType.VMESS_WS_TLS); - } - Notify("Checked_VMESS_WS"); - Notify("VMESS_WS_Path_Visibility"); - } - } - - public bool Checked_VMESS_H2 - { - get => settings.Types.Contains(XrayType.VMESS_H2_TLS); - set - { - if (value == true) - { - if (!settings.Types.Contains(XrayType.VMESS_H2_TLS)) - settings.Types.Add(XrayType.VMESS_H2_TLS); - } - else - { - settings.Types.Remove(XrayType.VMESS_H2_TLS); - } - Notify("Checked_VMESS_H2"); - Notify("VMESS_H2_Path_Visibility"); - } - } public bool Checked_Trojan_TCP { get { - return settings.Types.Contains(XrayType.Trojan_TCP_TLS); + return settings.Types.Contains(XrayType.Trojan_TCP); } set { if (value == true) { - if (!settings.Types.Contains(XrayType.Trojan_TCP_TLS)) - settings.Types.Add(XrayType.Trojan_TCP_TLS); + if (!settings.Types.Contains(XrayType.Trojan_TCP)) + settings.Types.Add(XrayType.Trojan_TCP); } else { - settings.Types.Remove(XrayType.Trojan_TCP_TLS); + settings.Types.Remove(XrayType.Trojan_TCP); } Notify("Checked_Trojan_TCP"); - Notify("Trojan_TCP_Pwd_Visibility"); + } + } + public string Trojan_TCP_ShareLink + { + get => ShareLink.Build(XrayType.Trojan_TCP, settings); + } + + private List _ssMethods = new List { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305" }; + public List ShadowSocksMethods => _ssMethods; + public bool CheckedShadowSocks + { + + get => settings.Types.Contains(XrayType.ShadowsocksAEAD); + set + { + CheckBoxChanged(value, XrayType.ShadowsocksAEAD); + Notify("CheckedShadowSocks"); + } + } + public string ShadowSocksPassword + { + get => settings.ShadowsocksPassword; + set => settings.ShadowsocksPassword = value; + } + public string ShadowSocksMethod + { + get => settings.ShadowsocksMethod; + set + { + var namespaceStr = typeof(ComboBoxItem).FullName + ":"; + var trimValue = value.Replace(namespaceStr, ""); + trimValue = trimValue.Trim(); + settings.ShadowsocksMethod = trimValue; + Notify("ShadowSocksMethod"); + } + } + public string ShadowSocksShareLink + { + get => ShareLink.Build(XrayType.ShadowsocksAEAD, settings); + } + + + private void CheckBoxChanged(bool value, XrayType type) + { + if (value == true) + { + if (!settings.Types.Contains(type)) + { + settings.Types.Add(type); + } + } + else + { + settings.Types.RemoveAll(x => x == type); } } - public Visibility VLESS_TCP_Path_Visibility + } + + public partial class XraySettingsViewModel + { + // vmess tcp + public bool Checked_VMESS_TCP { - get + get => settings.Types.Contains(XrayType.VMESS_TCP); + set { - return Checked_VLESS_TCP ? Visibility.Visible : Visibility.Hidden; + CheckBoxChanged(value, XrayType.VMESS_TCP); + Notify("Checked_VMESS_TCP"); } } - public Visibility VLESS_WS_Path_Visibility + public string VMESS_TCP_Path { - get - { - return Checked_VLESS_WS ? Visibility.Visible : Visibility.Hidden; - } + get => settings.VMESS_TCP_Path; + set => settings.VMESS_TCP_Path = value; } - public Visibility VLESS_H2_Path_Visibility + public string VMESS_TCP_ShareLink { - get - { - return Checked_VLESS_H2 ? Visibility.Visible : Visibility.Hidden; - } + get => ShareLink.Build(XrayType.VMESS_TCP, settings); } - public Visibility VMESS_TCP_Path_Visibility + // vmess ws + public bool Checked_VMESS_WS { - get + get => settings.Types.Contains(XrayType.VMESS_WS); + set { - return Checked_VMESS_TCP ? Visibility.Visible : Visibility.Hidden; + CheckBoxChanged(value, XrayType.VMESS_WS); + Notify("Checked_VMESS_WS"); } } - public Visibility VMESS_WS_Path_Visibility + public string VMESS_WS_Path { - get - { - return Checked_VMESS_WS ? Visibility.Visible : Visibility.Hidden; - } + get => settings.VMESS_WS_Path; + set => settings.VMESS_WS_Path = value; } - public Visibility VMESS_H2_Path_Visibility + public string VMESS_WS_TLS_ShareLink { - get - { - return Checked_VMESS_H2 ? Visibility.Visible : Visibility.Hidden; - } - } - public Visibility Trojan_TCP_Pwd_Visibility - { - get - { - return Checked_Trojan_TCP ? Visibility.Visible : Visibility.Hidden; - } + get => ShareLink.Build(XrayType.VMESS_WS, settings); } + // vmess kcp + public string VMESS_KCP_Seed + { + get => settings.VMESS_KCP_Seed; + set => settings.VMESS_KCP_Seed = value; + } + public string VMESS_KCP_Type + { + get => settings.VMESS_KCP_Type; + set + { + var namespaceStr = typeof(ComboBoxItem).FullName + ":"; + var trimValue = value.Replace(namespaceStr, ""); + trimValue = trimValue.Trim(); + settings.VMESS_KCP_Type = trimValue; + Notify("VMESS_KCP_Type"); + } + } + public bool Checked_VMESS_KCP + { + get => settings.Types.Contains(XrayType.VMESS_KCP); + set + { + CheckBoxChanged(value, XrayType.VMESS_KCP); + Notify("Checked_VMESS_KCP"); + } + } + public string VMESS_KCP_ShareLink + { + get => ShareLink.Build(XrayType.VMESS_KCP, settings); + } + + + private List _kcpTypes = new List { "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", }; + public List KcpTypes => _kcpTypes; + } + + + public partial class XraySettingsViewModel + { + + // vless xtls + public bool Checked_VLESS_TCP_XTLS + { + get => settings.Types.Contains(XrayType.VLESS_TCP_XTLS); + set + { + CheckBoxChanged(value, XrayType.VLESS_TCP_XTLS); + Notify("Checked_VLESS_XTLS"); + } + } public string VLESS_TCP_XTLS_ShareLink { get => ShareLink.Build(XrayType.VLESS_TCP_XTLS, settings); } - public string VLESS_TCP_TLS_ShareLink + + + // vless tcp + public bool Checked_VLESS_TCP { - get => ShareLink.Build(XrayType.VLESS_TCP_TLS, settings); + get => settings.Types.Contains(XrayType.VLESS_TCP); + set + { + CheckBoxChanged(value, XrayType.VLESS_TCP); + Notify("Checked_VLESS_TCP"); + } } - public string VLESS_WS_TLS_ShareLink + public string VLESS_TCP_ShareLink { - get => ShareLink.Build(XrayType.VLESS_WS_TLS, settings); + get => ShareLink.Build(XrayType.VLESS_TCP, settings); } - public string VLESS_H2_TLS_ShareLink + + + // vless ws + public string VLESS_WS_Path { - get => ShareLink.Build(XrayType.VLESS_H2_TLS, settings); + get => settings.VLESS_WS_Path; + set => settings.VLESS_WS_Path = value; } - public string VMESS_TCP_TLS_ShareLink + public bool Checked_VLESS_WS { - get => ShareLink.Build(XrayType.VMESS_TCP_TLS, settings); + get + { + return settings.Types.Contains(XrayType.VLESS_WS); + } + set + { + CheckBoxChanged(value, XrayType.VLESS_WS); + Notify("Checked_VLESS_WS"); + } } - public string VMESS_WS_TLS_ShareLink + public string VLESS_WS_ShareLink { - get => ShareLink.Build(XrayType.VMESS_WS_TLS, settings); - } - public string VMESS_H2_TLS_ShareLink - { - get => ShareLink.Build(XrayType.VMESS_H2_TLS, settings); - } - public string Trojan_TCP_TLS_ShareLink - { - get => ShareLink.Build(XrayType.Trojan_TCP_TLS, settings); + get => ShareLink.Build(XrayType.VLESS_WS, settings); } } diff --git a/ProxySU_Core/Views/ClientInfoWindow.xaml b/ProxySU_Core/Views/ClientInfoWindow.xaml index a20fb09..251b01f 100644 --- a/ProxySU_Core/Views/ClientInfoWindow.xaml +++ b/ProxySU_Core/Views/ClientInfoWindow.xaml @@ -34,7 +34,7 @@ @@ -69,7 +69,7 @@ @@ -130,7 +130,7 @@ diff --git a/ProxySU_Core/Views/RecordEditorWindow.xaml b/ProxySU_Core/Views/RecordEditorWindow.xaml index 988ea11..ce79ebb 100644 --- a/ProxySU_Core/Views/RecordEditorWindow.xaml +++ b/ProxySU_Core/Views/RecordEditorWindow.xaml @@ -13,6 +13,7 @@ + @@ -98,7 +99,7 @@ Content="{DynamicResource KeyLogin}" /> - + @@ -278,39 +292,97 @@ - - - - -