1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-11-22 13:16:09 +03:00

save client info

This commit is contained in:
next-autumn 2021-03-06 17:26:17 +08:00
parent b6e77b88b4
commit 77cf7737f7
6 changed files with 103 additions and 6 deletions

View File

@ -201,6 +201,9 @@
<Compile Include="ViewModels\RecordViewModel.cs" /> <Compile Include="ViewModels\RecordViewModel.cs" />
<Compile Include="ViewModels\Terminal.cs" /> <Compile Include="ViewModels\Terminal.cs" />
<Compile Include="ViewModels\XraySettingsViewModel.cs" /> <Compile Include="ViewModels\XraySettingsViewModel.cs" />
<Compile Include="Views\ClientInfoWindow.xaml.cs">
<DependentUpon>ClientInfoWindow.xaml</DependentUpon>
</Compile>
<Compile Include="Views\MainWindow.xaml.cs"> <Compile Include="Views\MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon> <DependentUpon>MainWindow.xaml</DependentUpon>
</Compile> </Compile>
@ -342,6 +345,10 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="Views\ClientInfoWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\MainWindow.xaml"> <Page Include="Views\MainWindow.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>

View File

@ -76,7 +76,9 @@ namespace ProxySU_Core.ViewModels
{ {
if (value == true) if (value == true)
{ {
settings.Types.Add(XrayType.VLESS_TCP_TLS); if (!settings.Types.Contains(XrayType.VLESS_TCP_TLS))
settings.Types.Add(XrayType.VLESS_TCP_TLS);
} }
else else
{ {
@ -97,7 +99,8 @@ namespace ProxySU_Core.ViewModels
{ {
if (value == true) if (value == true)
{ {
settings.Types.Add(XrayType.VLESS_TCP_XTLS); if (!settings.Types.Contains(XrayType.VLESS_TCP_XTLS))
settings.Types.Add(XrayType.VLESS_TCP_XTLS);
} }
else else
{ {
@ -117,7 +120,8 @@ namespace ProxySU_Core.ViewModels
{ {
if (value == true) if (value == true)
{ {
settings.Types.Add(XrayType.VLESS_WS_TLS); if (!settings.Types.Contains(XrayType.VLESS_WS_TLS))
settings.Types.Add(XrayType.VLESS_WS_TLS);
} }
else else
{ {
@ -138,7 +142,8 @@ namespace ProxySU_Core.ViewModels
{ {
if (value == true) if (value == true)
{ {
settings.Types.Add(XrayType.VMESS_TCP_TLS); if (!settings.Types.Contains(XrayType.VMESS_TCP_TLS))
settings.Types.Add(XrayType.VMESS_TCP_TLS);
} }
else else
{ {
@ -159,7 +164,8 @@ namespace ProxySU_Core.ViewModels
{ {
if (value == true) if (value == true)
{ {
settings.Types.Add(XrayType.VMESS_WS_TLS); if (!settings.Types.Contains(XrayType.VMESS_WS_TLS))
settings.Types.Add(XrayType.VMESS_WS_TLS);
} }
else else
{ {
@ -180,7 +186,8 @@ namespace ProxySU_Core.ViewModels
{ {
if (value == true) if (value == true)
{ {
settings.Types.Add(XrayType.Trojan_TCP_TLS); if (!settings.Types.Contains(XrayType.Trojan_TCP_TLS))
settings.Types.Add(XrayType.Trojan_TCP_TLS);
} }
else else
{ {

View File

@ -0,0 +1,24 @@
<metro:MetroWindow x:Class="ProxySU_Core.Views.ClientInfoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:metro="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:local="clr-namespace:ProxySU_Core.Views"
mc:Ignorable="d"
Title="ClientInfoWindow" Height="450" Width="800">
<Grid>
<TabControl
Background="#fff"
Style="{StaticResource MaterialDesignNavigatilRailTabControl}"
Padding="10">
<TabItem Width="200" Style="{StaticResource MaterialDesignNavigationRailTabItem}" Header="VLESS-TCP-XTLS"></TabItem>
<TabItem Width="200" Style="{StaticResource MaterialDesignNavigationRailTabItem}" Header="VLESS-TCP-XTL"></TabItem>
<TabItem Width="200" Style="{StaticResource MaterialDesignNavigationRailTabItem}" Header="VLESS-WebSocket-XTLS"></TabItem>
<TabItem Width="200" Style="{StaticResource MaterialDesignNavigationRailTabItem}" Header="VMESS-TCP-XTL"></TabItem>
<TabItem Width="200" Style="{StaticResource MaterialDesignNavigationRailTabItem}" Header="VLESS-WebSocket-XTL"></TabItem>
<TabItem Width="200" Style="{StaticResource MaterialDesignNavigationRailTabItem}" Header="VLESS-TCP-Trojan"></TabItem>
</TabControl>
</Grid>
</metro:MetroWindow>

View File

@ -0,0 +1,32 @@
using ProxySU_Core.Models;
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.Shapes;
namespace ProxySU_Core.Views
{
/// <summary>
/// ClientInfoWindow.xaml 的交互逻辑
/// </summary>
public partial class ClientInfoWindow
{
Record Record { get; set; }
public ClientInfoWindow(Record record)
{
InitializeComponent();
this.Record = record;
DataContext = this.Record;
}
}
}

View File

@ -96,6 +96,7 @@
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Button Content="{DynamicResource Connect}" FontSize="12" Height="24" Click="Connect" /> <Button Content="{DynamicResource Connect}" FontSize="12" Height="24" Click="Connect" />
<Button Content="{DynamicResource Edit}" FontSize="12" Height="24" Margin="10,0,0,0" Click="EditHost" /> <Button Content="{DynamicResource Edit}" FontSize="12" Height="24" Margin="10,0,0,0" Click="EditHost" />
<Button Content="查看配置" FontSize="12" Height="24" Margin="10,0,0,0" Click="ShowClientInfo" />
<Button Content="{DynamicResource Delete}" FontSize="12" Height="24" Margin="10,0,0,0" Click="DeleteHost" /> <Button Content="{DynamicResource Delete}" FontSize="12" Height="24" Margin="10,0,0,0" Click="DeleteHost" />
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>

View File

@ -1,5 +1,6 @@
using MahApps.Metro.Controls.Dialogs; using MahApps.Metro.Controls.Dialogs;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using ProxySU_Core.Models; using ProxySU_Core.Models;
using ProxySU_Core.ViewModels; using ProxySU_Core.ViewModels;
using ProxySU_Core.ViewModels.Developers; using ProxySU_Core.ViewModels.Developers;
@ -56,6 +57,20 @@ namespace ProxySU_Core
DataContext = this; DataContext = this;
} }
private void SaveRecord()
{
var recordList = Records.Select(x => x.record);
var json = JsonConvert.SerializeObject(recordList,
Formatting.Indented,
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
if (File.Exists("Data\\Record.json"))
{
File.WriteAllText("Data\\Record.json", json, Encoding.UTF8);
}
}
private void LaunchGitHubSite(object sender, RoutedEventArgs e) private void LaunchGitHubSite(object sender, RoutedEventArgs e)
{ {
@ -107,6 +122,7 @@ namespace ProxySU_Core
if (result == true) if (result == true)
{ {
Records.Add(new RecordViewModel(newRecord)); Records.Add(new RecordViewModel(newRecord));
SaveRecord();
} }
} }
@ -119,10 +135,20 @@ namespace ProxySU_Core
if (result == true) if (result == true)
{ {
project.Notify(); project.Notify();
SaveRecord();
} }
} }
} }
private void ShowClientInfo(object sender, RoutedEventArgs e)
{
if (DataGrid.SelectedItem is RecordViewModel project)
{
var dialog = new ClientInfoWindow(project.record);
dialog.ShowDialog();
}
}
private void DeleteHost(object sender, RoutedEventArgs e) private void DeleteHost(object sender, RoutedEventArgs e)
{ {