XFEExtension.NetCore.ServerInteractive
[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore.ServerInteractive.Test/Program.cs
+16
-9
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Helpers/InteractiveHelper.cs
+27
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs
+3
-2
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequesterBuilder.cs
+16
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/CoreLogService.cs
+4
-4
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/IpBannerService.cs
+10
-12
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserLoginService.cs
+5
-5
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/UserReloginService.cs
+3
-5
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/XFEDataTableManagerService.cs
+1
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/ServerService/ServerIpInitializer.cs
+2
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs
+5
-4
XFEstudio/XFEExtension.NetCore.ServerInteractive
优化代码
f5a0b55
代码差异
11 个文件
+92
-44
@@ -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
@@ -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
}
@@ -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
}
@@ -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>
@@ -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();
@@ -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:
@@ -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);
@@ -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('|');
@@ -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
}
@@ -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;
@@ -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
}