XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.ServerInteractive

[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.ServerInteractive

优化代码

f5a0b55
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

11 个文件 +92 -44
Modified XFEExtension.NetCore.ServerInteractive.Test/Program.cs +16 -9
@@ -8,7 +8,7 @@ using XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
8 8
9 9 internal class Program
10 10 {
11 static readonly XFEClientRequester xFEClientRequester = XFEClientRequesterBuilder.CreateBuilder("http://27.18.158.23:27177/api", string.Empty, DeviceHelper.GetUniqueHardwareId())
11 static readonly XFEClientRequester xFEClientRequester = XFEClientRequesterBuilder.CreateBuilder("http://localhost:27177/api")
12 12 .UseXFEStandardRequest<UserFaceInfo>()
13 13 .Build();
14 14
@@ -21,7 +21,7 @@ internal class Program
21 21 Console.WriteLine($"请求完成:{e.StatusCode}\t{e.Message}");
22 22 }
23 23
24 //[SMTest("Admin", "123456")]
24 [SMTest("Admin", "123456")]
25 25 public static async Task Login(string account, string password)
26 26 {
27 27 var result = await xFEClientRequester.Request<UserLoginResult<UserFaceInfo>>("login", account, password);
@@ -43,7 +43,7 @@ internal class Program
43 43 }
44 44 }
45 45
46 //[SMTest]
46 [SMTest]
47 47 public static async Task ReLogin()
48 48 {
49 49 var result = await xFEClientRequester.Request<UserFaceInfo>("relogin");
@@ -63,15 +63,22 @@ internal class Program
63 63 [SMTest]
64 64 public static async Task Check()
65 65 {
66 var result = await xFEClientRequester.Request<string>("check_connect");
67 if (result.StatusCode == System.Net.HttpStatusCode.OK)
66 try
68 67 {
69 Console.WriteLine(result.Result);
68 var result = await xFEClientRequester.Request<DateTime>("check_connect");
69 if (result.StatusCode == System.Net.HttpStatusCode.OK)
70 {
71 Console.WriteLine(result.Result);
72 }
73 else
74 {
75 Console.WriteLine(result.StatusCode);
76 Console.WriteLine(result.Message);
77 }
70 78 }
71 else
79 catch (Exception ex)
72 80 {
73 Console.WriteLine(result.StatusCode);
74 Console.WriteLine(result.Message);
81 Console.WriteLine(ex);
75 82 }
76 83 }
77 84
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Helpers/InteractiveHelper.cs +27 -1
@@ -1,4 +1,5 @@
1 using System.Net;
1 using System.Diagnostics;
2 using System.Net;
2 3 using System.Text.Json;
3 4
4 5 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
@@ -36,4 +37,29 @@ public static class InteractiveHelper
36 37 /// <param name="jsonSerializerOptions">序列化参数</param>
37 38 /// <returns></returns>
38 39 public static async Task<(string, HttpStatusCode)> GetServerResponse(string requestAddress, object postBody, JsonSerializerOptions jsonSerializerOptions) => await GetServerResponse(requestAddress, JsonSerializer.Serialize(postBody, jsonSerializerOptions));
40
41 /// <summary>
42 /// 获取Stopwatch的时间字符串
43 /// </summary>
44 /// <param name="stopwatch"></param>
45 /// <returns></returns>
46 public static string GetStopWatchTime(Stopwatch stopwatch)
47 {
48 if (stopwatch.Elapsed.TotalSeconds > 1)
49 {
50 return $"{stopwatch.Elapsed.TotalSeconds:F1} s";
51 }
52 else if (stopwatch.Elapsed.TotalMilliseconds > 1)
53 {
54 return $"{stopwatch.Elapsed.TotalMilliseconds:F1} ms";
55 }
56 else if (stopwatch.Elapsed.TotalMicroseconds > 1)
57 {
58 return $"{stopwatch.Elapsed.TotalMicroseconds:F1} μs";
59 }
60 else
61 {
62 return $"{stopwatch.Elapsed.TotalNanoseconds:F1} ns";
63 }
64 }
39 65 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs +3 -2
@@ -57,9 +57,9 @@ public abstract class XFEClientRequester : IRequesterBase
57 57 /// <exception cref="XFERequesterException"></exception>
58 58 public async Task<ClientRequestResult<object>> Request(string serviceName, params object[] parameters)
59 59 {
60 var result = new ClientRequestResult<object>();
60 61 try
61 62 {
62 var result = new ClientRequestResult<object>();
63 63 if (requestServiceDictionary.TryGetValue(serviceName, out var service))
64 64 {
65 65 result = await service.Request<object>(parameters);
@@ -103,7 +103,8 @@ public abstract class XFEClientRequester : IRequesterBase
103 103 catch (Exception ex)
104 104 {
105 105 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl(ex.Message, HttpStatusCode.InternalServerError));
106 return default!;
106 result.Message = ex.Message;
107 return result;
107 108 }
108 109 throw new XFERequesterException("请求的方法未注册");
109 110 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequesterBuilder.cs +16 -0
@@ -2,6 +2,7 @@
2 2 using XFEExtension.NetCore.ServerInteractive.Implements;
3 3 using XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
4 4 using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
5 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
5 6
6 7 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
7 8
@@ -33,6 +34,21 @@ public abstract class XFEClientRequesterBuilder : XFEBuilderBase<XFEClientReques
33 34 return builder;
34 35 }
35 36
37 /// <summary>
38 /// 创建构建器
39 /// </summary>
40 /// <param name="requestAddress">请求地址</param>
41 /// <returns></returns>
42 public static XFEClientRequesterBuilder CreateBuilder(string requestAddress = "http://localhost:8080/")
43 {
44 var builder = new XFEClientRequesterBuilderImpl();
45 builder.xFEClientRequester.RequestAddress = requestAddress;
46 builder.xFEClientRequester.Session = string.Empty;
47 builder.xFEClientRequester.ComputerInfo = DeviceHelper.GetUniqueHardwareId();
48 builder.AddParameter("XFEClientRequester", builder.xFEClientRequester);
49 return builder;
50 }
51
36 52 /// <summary>
37 53 /// 添加请求
38 54 /// </summary>
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/CoreLogService.cs +4 -4
@@ -23,14 +23,14 @@ public class CoreLogService : ServerCoreUserServiceBase
23 23 {
24 24 case "get_log":
25 25 Console.Write($"获取服务器日志请求");
26 UserHelper.ValidatePermission(Json!["session"], Json!["computerInfo"], ReturnArgs.Args.ClientIP, GetPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
27 if (!DateTime.TryParse(Json!["startDateTime"], out var startDatetime)) Error("起始日期格式不正确");
28 if (!DateTime.TryParse(Json!["endDateTime"], out var endDatetime)) Error("结束日期格式不正确");
26 UserHelper.ValidatePermission(Json["session"], Json["computerInfo"], ReturnArgs.Args.ClientIP, GetPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
27 if (!DateTime.TryParse(Json["startDateTime"], out var startDatetime)) Error("起始日期格式不正确");
28 if (!DateTime.TryParse(Json["endDateTime"], out var endDatetime)) Error("结束日期格式不正确");
29 29 await Close(XFEConsole.XFEConsole.Log.Export(startDatetime, endDatetime));
30 30 break;
31 31 case "clear_log":
32 32 Console.Write($"清除服务器日志请求");
33 UserHelper.ValidatePermission(Json!["session"], Json!["computerInfo"], ReturnArgs.Args.ClientIP, ClearPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
33 UserHelper.ValidatePermission(Json["session"], Json["computerInfo"], ReturnArgs.Args.ClientIP, ClearPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
34 34 if (File.Exists("server.log"))
35 35 File.Delete("server.log");
36 36 XFEConsole.XFEConsole.Log.Clear();
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/IpBannerService.cs +10 -12
@@ -1,9 +1,7 @@
1 1 using System.Net;
2 using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
3 2 using XFEExtension.NetCore.ServerInteractive.Profiles;
4 3 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
5 4 using XFEExtension.NetCore.StringExtension.Json;
6 using XFEExtension.NetCore.XFETransform.JsonConverter;
7 5
8 6 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.CoreService;
9 7
@@ -30,25 +28,25 @@ public class IpBannerService : ServerCoreUserServiceBase
30 28 switch (Execute)
31 29 {
32 30 case "get_bannedIpList":
33 Console.Write($"【{ReturnArgs!.Args.ClientIP}】获取禁止的IP地址列表请求");
34 UserHelper.ValidatePermission(Json!["session"], Json!["computerInfo"], ReturnArgs.Args.ClientIP, GetPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
31 Console.Write($"获取禁止的IP地址列表请求");
32 UserHelper.ValidatePermission(Json["session"], Json["computerInfo"], ReturnArgs.Args.ClientIP, GetPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
35 33 await Close(ServerBaseProfile.BannedIPAddressList.ToJson());
36 34 break;
37 35 case "add_bannedIp":
38 Console.WriteLine($"【{ReturnArgs!.Args.ClientIP}】添加禁止的IP地址请求 添加:{Json!["bannedIp"]}");
39 UserHelper.ValidatePermission(Json!["session"], Json!["computerInfo"], ReturnArgs.Args.ClientIP, AddPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
40 if (Json!["bannedIp"] is null) Error("无IP地址传入");
36 Console.WriteLine($"添加禁止的IP地址请求 添加:{Json["bannedIp"]}");
37 UserHelper.ValidatePermission(Json["session"], Json["computerInfo"], ReturnArgs.Args.ClientIP, AddPermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
38 if (Json["bannedIp"] is null) Error("无IP地址传入");
41 39 ServerBaseProfile.BannedIPAddressList.Add(new()
42 40 {
43 IPAddress = Json!["bannedIp"],
44 Notes = Json!["notes"]
41 IPAddress = Json["bannedIp"],
42 Notes = Json["notes"]
45 43 });
46 44 OK();
47 45 break;
48 46 case "remove_bannedIp":
49 Console.WriteLine($"【{ReturnArgs!.Args.ClientIP}】删除禁止的IP地址请求 移除:{Json!["bannedIp"]}");
50 UserHelper.ValidatePermission(Json!["session"], Json!["computerInfo"], ReturnArgs.Args.ClientIP, RemovePermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
51 var targetIp = ServerBaseProfile.BannedIPAddressList.FirstOrDefault(ip => ip.IPAddress == Json!["bannedIp"].ToString()) ?? throw ReturnArgs.GetError("无IP地址传入", HttpStatusCode.BadRequest);
47 Console.WriteLine($"删除禁止的IP地址请求 移除:{Json["bannedIp"]}");
48 UserHelper.ValidatePermission(Json["session"], Json["computerInfo"], ReturnArgs.Args.ClientIP, RemovePermission, GetEncryptedUserLoginModelFunction(), GetUserFunction(), ReturnArgs);
49 var targetIp = ServerBaseProfile.BannedIPAddressList.FirstOrDefault(ip => ip.IPAddress == Json["bannedIp"].ToString()) ?? throw ReturnArgs.GetError("无IP地址传入", HttpStatusCode.BadRequest);
52 50 await Close(ServerBaseProfile.BannedIPAddressList.Remove(targetIp).ToString());
53 51 break;
54 52 default:
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserLoginService.cs +5 -5
@@ -17,14 +17,14 @@ public class UserLoginService<T> : ServerCoreUserLoginServiceBase<T> where T : c
17 17 /// <inheritdoc/>
18 18 public override async Task StandardRequestReceived()
19 19 {
20 Console.Write($"【{ReturnArgs!.Args.ClientIP}】登录请求:");
21 var account = Json!["account"].ToString();
22 var password = Json!["password"].ToString();
23 var computerInfo = Json!["computerInfo"].ToString();
20 Console.Write($"登录请求:");
21 var account = Json["account"].ToString();
22 var password = Json["password"].ToString();
23 var computerInfo = Json["computerInfo"].ToString();
24 24 if (account.IsNullOrWhiteSpace()) Error("账户名不能为空");
25 25 if (password.IsNullOrWhiteSpace()) Error("登录密码不能为空");
26 26 if (computerInfo.IsNullOrWhiteSpace()) Error("电脑信息不能为空");
27 var user = UserHelper.GetUser(Json!["account"], Json!["password"], GetUserFunction(), ReturnArgs!);
27 var user = UserHelper.GetUser(Json["account"], Json["password"], GetUserFunction(), ReturnArgs!);
28 28 Console.WriteLine($"{account}({computerInfo})");
29 29 var userLoginList = GetEncryptedUserLoginModelFunction().Where(userLogin => userLogin.UserLoginModel.ComputerInfo == computerInfo);
30 30 var userLogin = GetEncryptedUserLoginModelFunction().FirstOrDefault(userLogin => userLogin.UserLoginModel.UID == user.ID);
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserReloginService.cs +3 -5
@@ -1,11 +1,9 @@
1 1 using System.Net;
2 2 using System.Text.Json;
3 3 using System.Text.RegularExpressions;
4 using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
5 4 using XFEExtension.NetCore.ServerInteractive.Models.UserModels;
6 5 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
7 6 using XFEExtension.NetCore.StringExtension;
8 using XFEExtension.NetCore.XFETransform.JsonConverter;
9 7
10 8 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.CoreService;
11 9
@@ -17,10 +15,10 @@ public class UserReloginService<T> : ServerCoreUserLoginServiceBase<T> where T :
17 15 /// <inheritdoc/>
18 16 public override async Task StandardRequestReceived()
19 17 {
20 Console.Write($"【{ReturnArgs!.Args.ClientIP}】校验登录请求:");
21 var session = Regex.Unescape(Json!["session"].ToString());
18 Console.Write($"校验登录请求:");
19 var session = Regex.Unescape(Json["session"].ToString());
22 20 Console.WriteLine(session);
23 var computerInfo = Json!["computerInfo"].ToString();
21 var computerInfo = Json["computerInfo"].ToString();
24 22 if (session.IsNullOrWhiteSpace()) Error("Session值不能为空");
25 23 if (computerInfo.IsNullOrWhiteSpace()) Error("电脑信息不能为空");
26 24 var split = session.Split('|');
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/XFEDataTableManagerService.cs +1 -1
@@ -16,5 +16,5 @@ public class XFEDataTableManagerService : ServerCoreStandardRegisterAsyncService
16 16 public XFEDataTableManager TableManager { get; set; }
17 17
18 18 /// <inheritdoc/>
19 public override async Task StandardRequestReceived() => await TableManager.Execute(Execute, Json!, ReturnArgs!);
19 public override async Task StandardRequestReceived() => await TableManager.Execute(Execute, Json, ReturnArgs!);
20 20 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/ServerService/ServerIpInitializer.cs +2 -1
@@ -1,6 +1,7 @@
1 1 using XFEExtension.NetCore.ServerInteractive.Implements.ServerService;
2 2 using XFEExtension.NetCore.ServerInteractive.Profiles;
3 3 using XFEExtension.NetCore.StringExtension;
4 using XFEExtension.NetCore.XFEConsole;
4 5
5 6 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.ServerService;
6 7
@@ -26,7 +27,7 @@ public class ServerIpInitializer : ServerInitializerServiceBase
26 27 ipAddress = string.Empty;
27 28 while (ipAddress.IsNullOrWhiteSpace())
28 29 {
29 Console.Write("请输入绑定的IP:");
30 XFEConsole.XFEConsole.CurrentConsoleTextWriter?.OriginalTextWriter.Write("请输入绑定的IP:");
30 31 ipAddress = Console.ReadLine();
31 32 }
32 33 ServerBaseProfile.ServerLastBindingAddressDictionary[serverCoreService.ServerCoreName] = ipAddress;
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs +5 -4
@@ -7,6 +7,7 @@ using XFEExtension.NetCore.ServerInteractive.Exceptions;
7 7 using XFEExtension.NetCore.ServerInteractive.Implements.ServerService;
8 8 using XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
9 9 using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
10 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
10 11 using XFEExtension.NetCore.StringExtension;
11 12 using XFEExtension.NetCore.XFETransform.JsonConverter;
12 13
@@ -137,7 +138,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
137 138 }
138 139 //Console.WriteLine($"【{e.ClientIP}】请求处理完成:{execute}");
139 140 stopWatch.Stop();
140 Console.WriteLine($"\t{execute} 请求处理完成![{stopWatch.ElapsedMilliseconds:F1}ms]");
141 Console.WriteLine($"\t{execute} 请求处理完成![{InteractiveHelper.GetStopWatchTime(stopWatch)}]");
141 142 return;
142 143 }
143 144 else if (standardCoreAsyncServiceDictionary.TryGetValue(execute, out var serviceAsyncFactory))
@@ -162,7 +163,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
162 163 });
163 164 }
164 165 stopWatch.Stop();
165 Console.WriteLine($"\t{execute} 请求处理完成![{stopWatch.ElapsedMilliseconds:F1}ms]");
166 Console.WriteLine($"\t{execute} 请求处理完成![{InteractiveHelper.GetStopWatchTime(stopWatch)}]");
166 167 return;
167 168 }
168 169 foreach (var key in standardMultiCoreServiceDictionary.Keys)
@@ -190,7 +191,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
190 191 });
191 192 }
192 193 stopWatch.Stop();
193 Console.WriteLine($"\t{execute} 请求处理完成![{stopWatch.ElapsedMilliseconds:F1}ms]");
194 Console.WriteLine($"\t{execute} 请求处理完成![{InteractiveHelper.GetStopWatchTime(stopWatch)}]");
194 195 return;
195 196 }
196 197 }
@@ -219,7 +220,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
219 220 });
220 221 }
221 222 stopWatch.Stop();
222 Console.WriteLine($"\t{execute} 请求处理完成![{stopWatch.ElapsedMilliseconds:F1}ms]");
223 Console.WriteLine($"\t{execute} 请求处理完成![{InteractiveHelper.GetStopWatchTime(stopWatch)}]");
223 224 return;
224 225 }
225 226 }