mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-22 13:16:09 +03:00
save
This commit is contained in:
parent
cb7d7e5f21
commit
970843f561
@ -12,12 +12,12 @@ namespace ProxySuper.Core.Models.Projects
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// ss password
|
/// ss password
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ShadowsocksPassword { get; set; }
|
public string ShadowSocksPassword { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ss method
|
/// ss method
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ShadowsocksMethod { get; set; }
|
public string ShadowSocksMethod { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ss port
|
/// ss port
|
||||||
|
@ -9,6 +9,7 @@ using ProxySuper.Core.Models.Projects;
|
|||||||
using ProxySuper.Core.ViewModels;
|
using ProxySuper.Core.ViewModels;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -56,7 +57,6 @@ namespace ProxySuper.Core.Models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public IMvxCommand NavToInstallerCommand => new MvxAsyncCommand(NavigateToInstaller);
|
public IMvxCommand NavToInstallerCommand => new MvxAsyncCommand(NavigateToInstaller);
|
||||||
|
|
||||||
@ -76,7 +76,6 @@ namespace ProxySuper.Core.Models
|
|||||||
this.Host = result.Host;
|
this.Host = result.Host;
|
||||||
this.XraySettings = result.XraySettings;
|
this.XraySettings = result.XraySettings;
|
||||||
|
|
||||||
await RaisePropertyChanged("Host");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Type == ProjectType.TrojanGo)
|
if (Type == ProjectType.TrojanGo)
|
||||||
@ -87,6 +86,7 @@ namespace ProxySuper.Core.Models
|
|||||||
this.Host = result.Host;
|
this.Host = result.Host;
|
||||||
this.TrojanGoSettings = result.TrojanGoSettings;
|
this.TrojanGoSettings = result.TrojanGoSettings;
|
||||||
}
|
}
|
||||||
|
await RaisePropertyChanged("Host");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task NavigateToInstaller()
|
public async Task NavigateToInstaller()
|
||||||
|
@ -36,8 +36,8 @@ namespace ProxySuper.Core.Services
|
|||||||
|
|
||||||
private static string BuildShadowSocksShareLink(XraySettings settings)
|
private static string BuildShadowSocksShareLink(XraySettings settings)
|
||||||
{
|
{
|
||||||
var _method = settings.ShadowsocksMethod;
|
var _method = settings.ShadowSocksMethod;
|
||||||
var _password = settings.ShadowsocksPassword;
|
var _password = settings.ShadowSocksPassword;
|
||||||
var _server = settings.Domain;
|
var _server = settings.Domain;
|
||||||
var _port = settings.ShadowSocksPort;
|
var _port = settings.ShadowSocksPort;
|
||||||
|
|
||||||
|
@ -201,8 +201,8 @@ namespace ProxySuper.Core.Services
|
|||||||
{
|
{
|
||||||
var ssBound = GetBound("Shadowsocks-AEAD.json");
|
var ssBound = GetBound("Shadowsocks-AEAD.json");
|
||||||
ssBound.port = parameters.ShadowSocksPort;
|
ssBound.port = parameters.ShadowSocksPort;
|
||||||
ssBound.settings.clients[0].password = parameters.ShadowsocksPassword;
|
ssBound.settings.clients[0].password = parameters.ShadowSocksPassword;
|
||||||
ssBound.settings.clients[0].method = parameters.ShadowsocksMethod;
|
ssBound.settings.clients[0].method = parameters.ShadowSocksMethod;
|
||||||
xrayConfig.inbounds.Add(JToken.FromObject(ssBound));
|
xrayConfig.inbounds.Add(JToken.FromObject(ssBound));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,12 +23,27 @@ namespace ProxySuper.Core.ViewModels
|
|||||||
{
|
{
|
||||||
_navigationService = navigationService;
|
_navigationService = navigationService;
|
||||||
ReadRecords();
|
ReadRecords();
|
||||||
|
_navigationService.AfterClose += _navigationService_AfterClose;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _navigationService_AfterClose(object sender, MvvmCross.Navigation.EventArguments.IMvxNavigateEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.ViewModel is XrayEditorViewModel ||
|
||||||
|
e.ViewModel is TrojanGoEditorViewModel)
|
||||||
|
{
|
||||||
|
SaveToJson();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReadRecords()
|
public void ReadRecords()
|
||||||
|
{
|
||||||
|
List<Record> records = new List<Record>();
|
||||||
|
if (File.Exists("Data/Record.json"))
|
||||||
{
|
{
|
||||||
var json = File.ReadAllText("Data/Record.json");
|
var json = File.ReadAllText("Data/Record.json");
|
||||||
var records = JsonConvert.DeserializeObject<List<Record>>(json);
|
records = JsonConvert.DeserializeObject<List<Record>>(json);
|
||||||
|
}
|
||||||
|
|
||||||
this.Records = new MvxObservableCollection<Record>();
|
this.Records = new MvxObservableCollection<Record>();
|
||||||
|
|
||||||
records.ForEach(item =>
|
records.ForEach(item =>
|
||||||
@ -41,9 +56,9 @@ namespace ProxySuper.Core.ViewModels
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveRecords()
|
public void SaveToJson()
|
||||||
{
|
{
|
||||||
var json = JsonConvert.SerializeObject(Records);
|
var json = JsonConvert.SerializeObject(this);
|
||||||
File.WriteAllText("Data/Record.json", json);
|
File.WriteAllText("Data/Record.json", json);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +79,9 @@ namespace ProxySuper.Core.ViewModels
|
|||||||
if (result == null) return;
|
if (result == null) return;
|
||||||
|
|
||||||
Records.Add(result);
|
Records.Add(result);
|
||||||
|
SaveToJson();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task AddTrojanGoRecord()
|
public async Task AddTrojanGoRecord()
|
||||||
|
@ -24,6 +24,76 @@ namespace ProxySuper.Core.ViewModels
|
|||||||
Settings = parameter;
|
Settings = parameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool Checked_VLESS_TCP_XTLS
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VLESS_TCP_XTLS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_VLESS_TCP
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VLESS_TCP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_VLESS_WS
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VLESS_WS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_VLESS_KCP
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VLESS_KCP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_VMESS_TCP
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VMESS_TCP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_VMESS_WS
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VMESS_WS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_VMESS_KCP
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.VMESS_KCP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Checked_Trojan_TCP
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.Trojan_TCP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CheckedShadowSocks
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Settings.Types.Contains(XrayType.ShadowsocksAEAD);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,18 +174,18 @@ namespace ProxySuper.Core.ViewModels
|
|||||||
}
|
}
|
||||||
public string ShadowSocksPassword
|
public string ShadowSocksPassword
|
||||||
{
|
{
|
||||||
get => Settings.ShadowsocksPassword;
|
get => Settings.ShadowSocksPassword;
|
||||||
set => Settings.ShadowsocksPassword = value;
|
set => Settings.ShadowSocksPassword = value;
|
||||||
}
|
}
|
||||||
public string ShadowSocksMethod
|
public string ShadowSocksMethod
|
||||||
{
|
{
|
||||||
get => Settings.ShadowsocksMethod;
|
get => Settings.ShadowSocksMethod;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
var namespaceStr = typeof(ComboBoxItem).FullName + ":";
|
var namespaceStr = typeof(ComboBoxItem).FullName + ":";
|
||||||
var trimValue = value.Replace(namespaceStr, "");
|
var trimValue = value.Replace(namespaceStr, "");
|
||||||
trimValue = trimValue.Trim();
|
trimValue = trimValue.Trim();
|
||||||
Settings.ShadowsocksMethod = trimValue;
|
Settings.ShadowSocksMethod = trimValue;
|
||||||
RaisePropertyChanged("ShadowSocksMethod");
|
RaisePropertyChanged("ShadowSocksMethod");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="80" />
|
<ColumnDefinition Width="80" />
|
||||||
<ColumnDefinition Width="auto" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
|
||||||
@ -111,7 +111,7 @@
|
|||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="80" />
|
<ColumnDefinition Width="80" />
|
||||||
<ColumnDefinition Width="auto" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<Label Content="{DynamicResource ProxyType}" Grid.Row="0" Grid.Column="0" />
|
<Label Content="{DynamicResource ProxyType}" Grid.Row="0" Grid.Column="0" />
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"host": {
|
|
||||||
"tag": "123",
|
|
||||||
"address": "122.23.36.32",
|
|
||||||
"userName": null,
|
|
||||||
"password": null,
|
|
||||||
"port": 22,
|
|
||||||
"privateKeyPath": null,
|
|
||||||
"proxy": {
|
|
||||||
"address": "127.0.0.1",
|
|
||||||
"port": 1080,
|
|
||||||
"type": 0,
|
|
||||||
"userName": null,
|
|
||||||
"password": null
|
|
||||||
},
|
|
||||||
"secretType": 0
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"port": 443,
|
|
||||||
"uuid": "ac082c52-0be1-4a20-a1ee-aa7e29ce2d1e",
|
|
||||||
"vlesS_WS_Path": "/vlessws",
|
|
||||||
"vlesS_H2_Path": "/vlessh2",
|
|
||||||
"vlesS_KCP_Seed": "ac082c52-0be1-4a20-a1ee-aa7e29ce2d1e",
|
|
||||||
"vlesS_KCP_Type": "none",
|
|
||||||
"vlesS_KCP_Port": 2001,
|
|
||||||
"vlesS_gRPC_ServiceName": "xray_gRPC",
|
|
||||||
"vlesS_gRPC_Port": 2002,
|
|
||||||
"vmesS_WS_Path": "/vmessws",
|
|
||||||
"vmesS_TCP_Path": "/vmesstcp",
|
|
||||||
"vmesS_H2_Path": "/vmessh2",
|
|
||||||
"vmesS_KCP_Seed": "ac082c52-0be1-4a20-a1ee-aa7e29ce2d1e",
|
|
||||||
"vmesS_KCP_Type": "none",
|
|
||||||
"vmesS_KCP_Port": 3001,
|
|
||||||
"trojanPassword": "ac082c52-0be1-4a20-a1ee-aa7e29ce2d1e",
|
|
||||||
"trojan_WS_Path": "/trojanws",
|
|
||||||
"shadowsocksPassword": "ac082c52-0be1-4a20-a1ee-aa7e29ce2d1e",
|
|
||||||
"shadowsocksMethod": "aes-128-gcm",
|
|
||||||
"shadowSocksPort": 4001,
|
|
||||||
"domain": "www.baodu.com",
|
|
||||||
"maskDomain": null,
|
|
||||||
"types": [
|
|
||||||
100,
|
|
||||||
101,
|
|
||||||
102,
|
|
||||||
104,
|
|
||||||
202,
|
|
||||||
204,
|
|
||||||
401,
|
|
||||||
301
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
@ -258,9 +258,6 @@
|
|||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<None Include="Data\Record.json">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
@ -395,7 +392,9 @@
|
|||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Resource>
|
</Resource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup>
|
||||||
|
<Folder Include="Data\" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="..\packages\System.Runtime.WindowsRuntime.4.6.0\build\net461\System.Runtime.WindowsRuntime.targets" Condition="Exists('..\packages\System.Runtime.WindowsRuntime.4.6.0\build\net461\System.Runtime.WindowsRuntime.targets')" />
|
<Import Project="..\packages\System.Runtime.WindowsRuntime.4.6.0\build\net461\System.Runtime.WindowsRuntime.targets" Condition="Exists('..\packages\System.Runtime.WindowsRuntime.4.6.0\build\net461\System.Runtime.WindowsRuntime.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
@ -34,13 +34,14 @@
|
|||||||
|
|
||||||
|
|
||||||
<!--Editor Window-->
|
<!--Editor Window-->
|
||||||
|
<sys:String x:Key="HostGroupName">Host</sys:String>
|
||||||
<sys:String x:Key="HostTag">Tag</sys:String>
|
<sys:String x:Key="HostTag">Tag</sys:String>
|
||||||
<sys:String x:Key="HostAddress">Address</sys:String>
|
<sys:String x:Key="HostAddress">Address</sys:String>
|
||||||
<sys:String x:Key="HostUserName">UserName</sys:String>
|
<sys:String x:Key="HostUserName">UserName</sys:String>
|
||||||
<sys:String x:Key="HostPassword">Password</sys:String>
|
<sys:String x:Key="HostPassword">Password</sys:String>
|
||||||
<sys:String x:Key="HostPort">Port</sys:String>
|
<sys:String x:Key="HostPort">Port</sys:String>
|
||||||
<sys:String x:Key="HostSecretType">SecretType</sys:String>
|
<sys:String x:Key="HostSecretType">SecretType</sys:String>
|
||||||
<sys:String x:Key="HostUploadSecretKey">UploadSecretKey</sys:String>
|
<sys:String x:Key="HostUploadSecretKey">UploadKey</sys:String>
|
||||||
<sys:String x:Key="HostSertTypePassword">Password</sys:String>
|
<sys:String x:Key="HostSertTypePassword">Password</sys:String>
|
||||||
<sys:String x:Key="HostSertTypePrivateKey">PrivateKey</sys:String>
|
<sys:String x:Key="HostSertTypePrivateKey">PrivateKey</sys:String>
|
||||||
|
|
||||||
|
@ -26,8 +26,8 @@
|
|||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|
||||||
<MenuItem Header="{DynamicResource MainMenuLanguage}" Padding="10,3">
|
<MenuItem Header="{DynamicResource MainMenuLanguage}" Padding="10,3">
|
||||||
<MenuItem Padding="0,5" Header="{DynamicResource MainMenuLanguageEn}"></MenuItem>
|
<MenuItem Padding="0,5" Header="{DynamicResource MainMenuLanguageEn}" Click="SetEnglish"></MenuItem>
|
||||||
<MenuItem Padding="0,5" Header="{DynamicResource MainMenuLanguageCn}"></MenuItem>
|
<MenuItem Padding="0,5" Header="{DynamicResource MainMenuLanguageCn}" Click="SetSimpleChinese"></MenuItem>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|
||||||
<MenuItem Header="{DynamicResource MainMenuHelper}" Padding="10,3">
|
<MenuItem Header="{DynamicResource MainMenuHelper}" Padding="10,3">
|
||||||
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
<StackPanel Grid.Row="1" Margin="0,10">
|
<StackPanel Grid.Row="1" Margin="0,10">
|
||||||
<DataGrid AutoGenerateColumns="False"
|
<DataGrid AutoGenerateColumns="False"
|
||||||
|
Name="DataGrid"
|
||||||
ItemsSource="{Binding Records}"
|
ItemsSource="{Binding Records}"
|
||||||
VerticalContentAlignment="Bottom"
|
VerticalContentAlignment="Bottom"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
@ -82,7 +83,7 @@
|
|||||||
Padding="12,3"
|
Padding="12,3"
|
||||||
Content="{DynamicResource MainDataGridColumnActionViewConfig}" />
|
Content="{DynamicResource MainDataGridColumnActionViewConfig}" />
|
||||||
|
|
||||||
<Button Click="NavToEditor"
|
<Button Command="{Binding NavToEditorCommand}"
|
||||||
Margin="5,0"
|
Margin="5,0"
|
||||||
Padding="12,3"
|
Padding="12,3"
|
||||||
Content="{DynamicResource MainDataGridColumnActionDelete}" />
|
Content="{DynamicResource MainDataGridColumnActionDelete}" />
|
||||||
|
@ -44,16 +44,18 @@ namespace ProxySuper.WPF.Views
|
|||||||
System.Diagnostics.Process.Start("explorer.exe", "https://github.com/proxysu/ProxySU");
|
System.Diagnostics.Process.Start("explorer.exe", "https://github.com/proxysu/ProxySU");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void NavToEditor(object sender, RoutedEventArgs e)
|
|
||||||
|
ResourceDictionary resource = new ResourceDictionary();
|
||||||
|
private void SetSimpleChinese(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
NavigationService.Navigate<XrayEditorViewModel, Record, Record>(ViewModel.Records[0]);
|
resource.Source = new Uri(@"Resources\Languages\zh_cn.xaml", UriKind.Relative);
|
||||||
|
Application.Current.Resources.MergedDictionaries[0] = resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Dispose(bool disposing)
|
private void SetEnglish(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
ViewModel.SaveRecords();
|
resource.Source = new Uri(@"Resources\Languages\en.xaml", UriKind.Relative);
|
||||||
base.Dispose(disposing);
|
Application.Current.Resources.MergedDictionaries[0] = resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,70 +25,70 @@
|
|||||||
SelectionChanged="BuildQrCode">
|
SelectionChanged="BuildQrCode">
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VLESS_TCP_XTLS}"
|
Tag="{x:Static models:XrayType.VLESS_TCP_XTLS}"
|
||||||
IsEnabled="{Binding Settings.Checked_VLESS_TCP_XTLS}"
|
IsEnabled="{Binding Checked_VLESS_TCP_XTLS}"
|
||||||
Header="VLESS-TCP-XTLS">
|
Header="VLESS-TCP-XTLS">
|
||||||
<ctrl:VLESS_XTLS_Control />
|
<ctrl:VLESS_XTLS_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VLESS_TCP}"
|
Tag="{x:Static models:XrayType.VLESS_TCP}"
|
||||||
IsEnabled="{Binding Settings.Checked_VLESS_TCP}"
|
IsEnabled="{Binding Checked_VLESS_TCP}"
|
||||||
Header="VLESS-TCP-TLS">
|
Header="VLESS-TCP-TLS">
|
||||||
<ctrl:VLESS_TCP_TLS_Control />
|
<ctrl:VLESS_TCP_TLS_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VLESS_WS}"
|
Tag="{x:Static models:XrayType.VLESS_WS}"
|
||||||
IsEnabled="{Binding Settings.Checked_VLESS_WS}"
|
IsEnabled="{Binding Checked_VLESS_WS}"
|
||||||
Header="VLESS-WebSocket-TLS">
|
Header="VLESS-WebSocket-TLS">
|
||||||
<ctrl:VLESS_WS_TLS_Control />
|
<ctrl:VLESS_WS_TLS_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VLESS_KCP}"
|
Tag="{x:Static models:XrayType.VLESS_KCP}"
|
||||||
IsEnabled="{Binding Settings.Checked_VLESS_KCP}"
|
IsEnabled="{Binding Checked_VLESS_KCP}"
|
||||||
Header="VLESS-mKCP">
|
Header="VLESS-mKCP">
|
||||||
<ctrl:VLESS_KCP_Control />
|
<ctrl:VLESS_KCP_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<!--<TabItem Width="200"
|
<!--<TabItem Width="200"
|
||||||
Tag="{x:Static models:XrayType.VLESS_gRPC}"
|
Tag="{x:Static models:XrayType.VLESS_gRPC}"
|
||||||
IsEnabled="{Binding Settings.Checked_VLESS_gRPC}"
|
IsEnabled="{Binding Checked_VLESS_gRPC}"
|
||||||
Header="VLESS-gRPC">
|
Header="VLESS-gRPC">
|
||||||
<ctrl:VLESS_gRPC_Control />
|
<ctrl:VLESS_gRPC_Control />
|
||||||
</TabItem>-->
|
</TabItem>-->
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<!--<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VMESS_TCP}"
|
Tag="{x:Static models:XrayType.VMESS_TCP}"
|
||||||
IsEnabled="{Binding Settings.Checked_VMESS_TCP}"
|
IsEnabled="{Binding Checked_VMESS_TCP}"
|
||||||
Header="VMESS-TCP-TLS">
|
Header="VMESS-TCP-TLS">
|
||||||
<ctrl:VMESS_TCP_TLS_Control />
|
<ctrl:VMESS_TCP_TLS_Control />
|
||||||
</TabItem>
|
</TabItem>-->
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VMESS_WS}"
|
Tag="{x:Static models:XrayType.VMESS_WS}"
|
||||||
IsEnabled="{Binding Settings.Checked_VMESS_WS}"
|
IsEnabled="{Binding Checked_VMESS_WS}"
|
||||||
Header="VMESS-WebSocket-TLS">
|
Header="VMESS-WebSocket-TLS">
|
||||||
<ctrl:VMESS_WS_TLS_Control />
|
<ctrl:VMESS_WS_TLS_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.VMESS_KCP}"
|
Tag="{x:Static models:XrayType.VMESS_KCP}"
|
||||||
IsEnabled="{Binding Settings.Checked_VMESS_KCP}"
|
IsEnabled="{Binding Checked_VMESS_KCP}"
|
||||||
Header="VMESS-mKCP">
|
Header="VMESS-mKCP">
|
||||||
<ctrl:VMESS_KCP_Control />
|
<ctrl:VMESS_KCP_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.Trojan_TCP}"
|
Tag="{x:Static models:XrayType.Trojan_TCP}"
|
||||||
IsEnabled="{Binding Settings.Checked_Trojan_TCP}"
|
IsEnabled="{Binding Checked_Trojan_TCP}"
|
||||||
Header="Trojan-TCP">
|
Header="Trojan-TCP">
|
||||||
<ctrl:Trojan_TCP_Control />
|
<ctrl:Trojan_TCP_Control />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem Width="200" Height="40"
|
<TabItem Width="200" Height="40"
|
||||||
Tag="{x:Static models:XrayType.ShadowsocksAEAD}"
|
Tag="{x:Static models:XrayType.ShadowsocksAEAD}"
|
||||||
IsEnabled="{Binding Settings.CheckedShadowSocks}"
|
IsEnabled="{Binding CheckedShadowSocks}"
|
||||||
Header="ShadowSocks">
|
Header="ShadowSocks">
|
||||||
<ctrl:ShadowSocksControl />
|
<ctrl:ShadowSocksControl />
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
Loading…
Reference in New Issue
Block a user