Skip to content

Commit 5d1ae47

Browse files
committed
v3.6.5.3 update
1 parent e643528 commit 5d1ae47

File tree

10 files changed

+443
-70
lines changed

10 files changed

+443
-70
lines changed

MSL/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@
4949
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
5050
//通过使用 "*",如下所示:
5151
// [assembly: AssemblyVersion("1.0.*")]
52-
[assembly: AssemblyVersion("3.6.5.2")]
53-
[assembly: AssemblyFileVersion("3.6.5.2")]
52+
[assembly: AssemblyVersion("3.6.5.3")]
53+
[assembly: AssemblyFileVersion("3.6.5.3")]

MSL/forms/AddFrpc.xaml.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using MSL.pages.frpProviders;
22
using MSL.pages.frpProviders.MSLFrp;
3+
using System;
34
using System.Collections.Generic;
45
using System.Windows.Controls;
56

@@ -32,6 +33,9 @@ private void TabControl_SelectionChanged(object sender, SelectionChangedEventArg
3233
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
3334
{
3435
Pages.Clear();
36+
GC.Collect(); // find finalizable objects
37+
GC.WaitForPendingFinalizers(); // wait until finalizers executed
38+
GC.Collect(); // collect finalized objects
3539
}
3640

3741
/*

MSL/pages/FrpcList.xaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818
</Grid.RowDefinitions>
1919
<Label Style="{StaticResource BorderTitle}" Content="{Binding [Page_FrpcPage_Title], Source={x:Static langs:LanguageManager.Instance}}"/>
2020
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top">
21-
<!--
22-
<Button x:Name="MyInfo" Content="我的MSL-Frp信息" Click="AddFrpc_Click"/>
23-
-->
21+
<Button x:Name="MyInfo" Content="我的MSL-Frp信息" Click="MyInfo_Click"/>
2422
</StackPanel>
2523
<Border Grid.Row="1" CornerRadius="10" BorderThickness="0" Background="{DynamicResource BackgroundBrush}">
2624
<ListBox x:Name="FrpcListBox" Background="{x:Null}" BorderBrush="{x:Null}" hc:Empty.ShowEmpty="true" MouseDoubleClick="FrpcListBox_MouseDoubleClick" KeyUp="FrpcListBox_KeyUp">

MSL/pages/FrpcList.xaml.cs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using MSL.utils;
1+
using MSL.pages.frpProviders.MSLFrp;
2+
using MSL.utils;
23
using Newtonsoft.Json.Linq;
34
using System;
45
using System.Collections.Generic;
@@ -7,6 +8,7 @@
78
using System.Windows;
89
using System.Windows.Controls;
910
using System.Windows.Input;
11+
using System.Windows.Media;
1012
using Path = System.IO.Path;
1113

1214
namespace MSL.pages
@@ -98,6 +100,31 @@ private void FrpcListBox_KeyUp(object sender, KeyEventArgs e)
98100
}
99101
}
100102

103+
private void MyInfo_Click(object sender, RoutedEventArgs e)
104+
{
105+
HandyControl.Controls.Window window = new HandyControl.Controls.Window
106+
{
107+
108+
NonClientAreaBackground = (Brush)FindResource("BackgroundBrush"),
109+
Background = (Brush)FindResource("BackgroundBrush"),
110+
Title = "我的MSL-Frp信息",
111+
MinHeight = 450,
112+
MinWidth = 750,
113+
Height = 450,
114+
Width = 750,
115+
ResizeMode = ResizeMode.CanResize,
116+
WindowStartupLocation = WindowStartupLocation.CenterOwner
117+
};
118+
Action closeWindow = () =>
119+
{
120+
window.Close();
121+
};
122+
MSLFrpProfile frpProfile = new MSLFrpProfile(close: closeWindow);
123+
window.Owner = Window.GetWindow(this);
124+
window.Content = frpProfile;
125+
window.ShowDialog();
126+
}
127+
101128
private void AddFrpc_Click(object sender, RoutedEventArgs e)
102129
{
103130
AddFrpc af = new AddFrpc();

MSL/pages/frpProviders/MSLFrp/MSLFrp.xaml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<Grid>
1313
<TabControl x:Name="MainCtrl" Margin="10,5,10,10" Style="{StaticResource TabControlCapsuleSolidInLine}" Background="Transparent" BorderThickness="0" SelectionChanged="MainCtrl_SelectionChanged">
14-
<TabItem Header="我的信息">
14+
<TabItem Header="我的隧道">
1515
<Grid x:Name="MainGrid">
1616
<Grid.ColumnDefinitions>
1717
<ColumnDefinition Width="auto"/>
@@ -65,7 +65,7 @@
6565
<Label x:Name="UserInfo" Style="{DynamicResource MagicLabel14}" Margin="5,0" Content="Loadings..."/>
6666
</StackPanel>
6767
<StackPanel Grid.Column="1" Margin="5" >
68-
<Button Content="打开官网" x:Name="OpenWeb" Style="{StaticResource ButtonPrimary}" Margin="0,0,0,3" HorizontalAlignment="Stretch" Click="OpenWeb_Click" />
68+
<Button Content="打开官网" x:Name="OpenWeb" Style="{StaticResource ButtonPrimary}" Margin="0,0,0,3" HorizontalAlignment="Stretch" Command="hc:ControlCommands.OpenLink" CommandParameter="https://user.mslmc.cn"/>
6969
<Button Content="退出登录" x:Name="ExitBtn" Margin="0,3,0,0" HorizontalAlignment="Stretch" Click="ExitBtn_Click" />
7070
</StackPanel>
7171
</Grid>
@@ -162,15 +162,16 @@
162162
</Grid>
163163
</Grid>
164164
</TabItem>
165+
<TabItem Header="个人中心">
166+
<Frame x:Name="UserCenterFrame"/>
167+
</TabItem>
165168
</TabControl>
166-
167-
168169
<Grid x:Name="LoginGrid" Visibility="Collapsed">
169170
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" >
170171
<TextBlock Text="使用MSL-FRP(新)服务之前,请先登录您的MSL账户" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" Foreground="{DynamicResource PrimaryTextBrush}" Margin="0,0,0,20"/>
171172
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
172173
<Button x:Name="userTokenLogin" Content="使用账号密码登录" Style="{StaticResource ButtonPrimary}" Margin="0,0,5,0" Click="userTokenLogin_Click"/>
173-
<Button x:Name="userRegister" Content="注册/进入用户中心" Margin="5,0,0,0" Click="userRegister_Click" />
174+
<Button x:Name="userRegister" Content="注册/进入用户中心" Margin="5,0,0,0" Command="hc:ControlCommands.OpenLink" CommandParameter="https://user.mslmc.cn"/>
174175
</StackPanel>
175176
<CheckBox Content="保存登录状态(风险自负哦~)" HorizontalAlignment="Center" Margin="0,10,0,0" x:Name="SaveToken"/>
176177
<TextBlock Text="仅支持账号密码登录哦~" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="13" Foreground="{DynamicResource PrimaryTextBrush}" Margin="0,10,0,0"/>

MSL/pages/frpProviders/MSLFrp/MSLFrp.xaml.cs

Lines changed: 103 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading.Tasks;
66
using System.Windows;
77
using System.Windows.Controls;
8+
using Windows.UI.Core;
89

910
namespace MSL.pages.frpProviders.MSLFrp
1011
{
@@ -13,52 +14,98 @@ namespace MSL.pages.frpProviders.MSLFrp
1314
/// </summary>
1415
public partial class MSLFrp : Page
1516
{
17+
private MSLFrpProfile FrpProfile;
18+
private readonly Action ChangeTab;
1619
public MSLFrp()
1720
{
1821
InitializeComponent();
22+
ChangeTab = () =>
23+
{
24+
MainCtrl.SelectedIndex = 0;
25+
};
1926
}
2027

2128
private bool isInit = false;
2229
private async void Page_Loaded(object sender, EventArgs e)
2330
{
24-
if (!isInit)
31+
if (isInit)
32+
return;
33+
34+
isInit = true;
35+
FrpProfile = new MSLFrpProfile(close: ChangeTab);
36+
// 显示登录页面
37+
LoginGrid.Visibility = Visibility.Visible;
38+
MainCtrl.Visibility = Visibility.Collapsed;
39+
40+
// 获取Token并尝试登录
41+
var token = string.IsNullOrEmpty(MSLFrpApi.UserToken)
42+
? Config.Read("MSLUserAccessToken")?.ToString()
43+
: MSLFrpApi.UserToken;
44+
45+
if (string.IsNullOrEmpty(token))
2546
{
26-
isInit = true;
27-
//显示登录页面
28-
LoginGrid.Visibility = Visibility.Visible;
29-
MainCtrl.Visibility = Visibility.Collapsed;
30-
var token = Config.Read("MSLUserAccessToken")?.ToString() ?? "";
31-
if (token != "")
32-
{
33-
MagicDialog MagicDialog = new MagicDialog();
34-
MagicDialog.ShowTextDialog(Window.GetWindow(this), "登录中……");
35-
var (Code, Msg) = await MSLFrpApi.UserLogin(token);
36-
MagicDialog.CloseTextDialog();
37-
if (Code != 200)
38-
{
39-
MagicShow.ShowMsgDialog(Window.GetWindow(this), "登陆失败!\n" + Msg, "错误");
40-
return;
41-
}
42-
//显示main页面
43-
LoginGrid.Visibility = Visibility.Collapsed; ;
44-
MainCtrl.Visibility = Visibility.Visible;
45-
JObject JsonUserInfo = JObject.Parse(Msg);
46-
int userLevel = Functions.GetCurrentUnixTimestamp() < (long)JsonUserInfo["data"]["outdated"] ? int.Parse((string)JsonUserInfo["data"]["user_group"]) : 0;
47-
string userGroup = userLevel == 6 ? "超级管理员" : userLevel == 0 ? "普通用户" : "赞助用户";
48-
Dispatcher.Invoke(() =>
49-
{
50-
UserInfo.Content = $"用户名: {JsonUserInfo["data"]["name"]}\n" +
51-
$"用户组: {userGroup} \n" +
52-
$"到期时间: {Functions.ConvertUnixTimeSeconds((long)JsonUserInfo["data"]["outdated"])}\n" +
53-
$"(会员服务请先前往官网进行购买!)";
54-
});
47+
return; // 如果没有Token,直接返回
48+
}
5549

56-
//获取隧道
57-
await GetTunnelList();
58-
}
50+
// 登录并获取用户信息
51+
var loginSuccess = await AttemptLogin(token);
52+
if (!loginSuccess)
53+
{
54+
return; // 登录失败,返回
5955
}
56+
57+
// 显示main页面
58+
LoginGrid.Visibility = Visibility.Collapsed;
59+
MainCtrl.Visibility = Visibility.Visible;
60+
61+
// 获取隧道列表
62+
await GetTunnelList();
6063
}
6164

65+
// 封装登录操作
66+
private async Task<bool> AttemptLogin(string token)
67+
{
68+
MagicDialog magicDialog = new MagicDialog();
69+
magicDialog.ShowTextDialog(Window.GetWindow(this), "登录中……");
70+
71+
var (Code, Msg) = string.IsNullOrEmpty(token)
72+
? await MSLFrpApi.UserLogin(token)
73+
: await MSLFrpApi.UserLogin(token);
74+
75+
magicDialog.CloseTextDialog();
76+
77+
if (Code != 200)
78+
{
79+
MagicShow.ShowMsgDialog(Window.GetWindow(this), "登陆失败!\n" + Msg, "错误");
80+
return false;
81+
}
82+
83+
// 解析用户信息并更新UI
84+
JObject JsonUserInfo = JObject.Parse(Msg);
85+
UpdateUserInfo(JsonUserInfo);
86+
87+
return true;
88+
}
89+
90+
// 更新用户信息UI
91+
private void UpdateUserInfo(JObject JsonUserInfo)
92+
{
93+
int userLevel = Functions.GetCurrentUnixTimestamp() < (long)JsonUserInfo["data"]["outdated"]
94+
? int.Parse((string)JsonUserInfo["data"]["user_group"])
95+
: 0;
96+
97+
string userGroup = userLevel == 6 ? "超级管理员" : userLevel == 0 ? "普通用户" : "赞助用户";
98+
99+
Dispatcher.Invoke(() =>
100+
{
101+
UserInfo.Content = $"用户名: {JsonUserInfo["data"]["name"]}\n" +
102+
$"用户组: {userGroup} \n" +
103+
$"到期时间: {Functions.ConvertUnixTimeSeconds((long)JsonUserInfo["data"]["outdated"])}\n" +
104+
$"(会员服务请先前往官网进行购买!)";
105+
});
106+
}
107+
108+
62109
private async Task GetTunnelList()
63110
{
64111
//获取隧道
@@ -102,6 +149,9 @@ private async void MainCtrl_SelectionChanged(object sender, SelectionChangedEven
102149
await GetNodeList();
103150
Create_Name.Text = Functions.RandomString("MSL_", 6);
104151
break;
152+
case 2:
153+
UserCenterFrame.Content= FrpProfile;
154+
break;
105155
}
106156
}
107157

@@ -116,8 +166,26 @@ private async void userTokenLogin_Click(object sender, RoutedEventArgs e)
116166
bool save = (bool)SaveToken.IsChecked;
117167
MagicDialog MagicDialog = new MagicDialog();
118168
MagicDialog.ShowTextDialog(Window.GetWindow(this), "登录中……");
119-
await MSLFrpApi.UserLogin(string.Empty, email, password, save);
169+
var (Code, Msg) = await MSLFrpApi.UserLogin(string.Empty, email, password, save);
120170
MagicDialog.CloseTextDialog();
171+
if (Code != 200)
172+
{
173+
MagicShow.ShowMsgDialog(Window.GetWindow(this), "登陆失败!\n" + Msg, "错误");
174+
return;
175+
}
176+
LoginGrid.Visibility = Visibility.Collapsed; ;
177+
MainCtrl.Visibility = Visibility.Visible;
178+
JObject JsonUserInfo = JObject.Parse(Msg);
179+
int userLevel = Functions.GetCurrentUnixTimestamp() < (long)JsonUserInfo["data"]["outdated"] ? int.Parse((string)JsonUserInfo["data"]["user_group"]) : 0;
180+
string userGroup = userLevel == 6 ? "超级管理员" : userLevel == 0 ? "普通用户" : "赞助用户";
181+
Dispatcher.Invoke(() =>
182+
{
183+
UserInfo.Content = $"用户名: {JsonUserInfo["data"]["name"]}\n" +
184+
$"用户组: {userGroup} \n" +
185+
$"到期时间: {Functions.ConvertUnixTimeSeconds((long)JsonUserInfo["data"]["outdated"])}\n" +
186+
$"(会员服务请先前往官网进行购买!)";
187+
});
188+
await GetTunnelList();
121189
}
122190
}
123191
}
@@ -194,18 +262,14 @@ private async void Del_Tunnel_Click(object sender, RoutedEventArgs e)
194262

195263
}
196264

197-
private void OpenWeb_Click(object sender, RoutedEventArgs e)
198-
{
199-
Process.Start("https://user.mslmc.cn");
200-
}
201-
202265
private void ExitBtn_Click(object sender, RoutedEventArgs e)
203266
{
204267
//显示登录页面
205268
LoginGrid.Visibility = Visibility.Visible;
206269
MainCtrl.Visibility = Visibility.Collapsed;
207270
MSLFrpApi.UserToken = string.Empty;
208271
Config.Remove("MSLUserAccessToken");
272+
FrpProfile = new MSLFrpProfile(close: ChangeTab);
209273
}
210274

211275
private void NodeList_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -245,11 +309,6 @@ private async void Create_OKBtn_Click(object sender, RoutedEventArgs e)
245309
}
246310
}
247311

248-
private void userRegister_Click(object sender, RoutedEventArgs e)
249-
{
250-
Process.Start("https://user.mslmc.cn");
251-
}
252-
253312
private void GenerateRandomPort_Click(object sender, RoutedEventArgs e)
254313
{
255314
var listBox = NodeList;

0 commit comments

Comments
 (0)