55using System . Threading . Tasks ;
66using System . Windows ;
77using System . Windows . Controls ;
8+ using Windows . UI . Core ;
89
910namespace 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