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

将绑定IP地址改为多IP绑定

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

代码差异

11 个文件 +52 -37
Modified XFEExtension.NetCore.ServerInteractive.TServer/Program.cs +5 -1
@@ -26,6 +26,10 @@ var server = XFEServerBuilder.CreateBuilder() // 创建服务器构建器
26 26 .AddTable<User, UserProfile>("用户", (int)UserRole.经理, (int)UserRole.经理, (int)UserRole.经理, (int)UserRole.业务员); // 添加名为用户的表格User类 型, AutoConfig为 UserProfile。获取权限为业务员,添加移除更改权限为经理
27 27 })
28 28 .AddStandardService<TestCoreService>("test")
29 .Build()) // 构建核心服务器
29 .Build(options =>
30 {
31 options.BindIP("http://localhost:3305/")
32 .BindIP("https://localhost:3306/");
33 })) // 构建核心服务器
30 34 .Build(); // 构建服务器
31 35 await server.Start(); // 启动服务
Modified XFEExtension.NetCore.ServerInteractive/Implements/ServerService/ServerCoreServiceBase.cs +1 -1
@@ -13,7 +13,7 @@ public abstract class ServerCoreServiceBase : IServerCoreService
13 13 /// <inheritdoc/>
14 14 public string ServerCoreName { get; set; } = string.Empty;
15 15 /// <inheritdoc/>
16 public string BindingIPAddress { get; set; } = string.Empty;
16 public List<string> BindingIPAddressList { get; set; } = [];
17 17
18 18 /// <inheritdoc/>
19 19 public abstract Task StartServerCore();
Modified XFEExtension.NetCore.ServerInteractive/Interfaces/ServerService/IServerCoreService.cs +1 -1
@@ -8,7 +8,7 @@ public interface IServerCoreService : IXFEServerServiceBase
8 8 /// <summary>
9 9 /// 绑定的IP地址(服务初始化执行完成后才会刷新)
10 10 /// </summary>
11 string BindingIPAddress { get; set; }
11 List<string> BindingIPAddressList { get; set; }
12 12 /// <summary>
13 13 /// 核心服务器名称
14 14 /// </summary>
Modified XFEExtension.NetCore.ServerInteractive/Options/XFEServerCoreOptions.cs +12 -1
@@ -10,7 +10,7 @@ public class XFEServerCoreOptions
10 10 /// <summary>
11 11 /// 绑定的IP地址(服务初始化执行完成后才会刷新)
12 12 /// </summary>
13 public string BindingIPAddress { get; set; } = string.Empty;
13 public List<string> BindingIPAddress { get; set; } = [];
14 14 /// <summary>
15 15 /// 核心服务器名称
16 16 /// </summary>
@@ -27,4 +27,15 @@ public class XFEServerCoreOptions
27 27 /// 获取IP地址的函数,默认为从请求事件参数中获取客户端IP地址
28 28 /// </summary>
29 29 public Func<CyberCommRequestEventArgs, string> GetIPFunction { get; set; } = args => args.ClientIP;
30
31 /// <summary>
32 /// 绑定IP地址
33 /// </summary>
34 /// <param name="ipAddress"></param>
35 /// <returns></returns>
36 public XFEServerCoreOptions BindIP(string ipAddress)
37 {
38 BindingIPAddress.Add(ipAddress);
39 return this;
40 }
30 41 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Extensions/XFEServerBuilderExtensions.cs +1 -1
@@ -17,7 +17,6 @@ public static class XFEServerBuilderExtensions
17 17 /// <returns></returns>
18 18 public XFEServerBuilder UseXFEServer() => xFEServerBuilder.UseXFELog()
19 19 .AddXFEExceptionProcess()
20 .AddXFEIPInitializer()
21 20 .AddXFECoreProcessor();
22 21
23 22 /// <summary>
@@ -42,6 +41,7 @@ public static class XFEServerBuilderExtensions
42 41 /// 使用XFEIP初始化器
43 42 /// </summary>
44 43 /// <returns></returns>
44 [Obsolete("核心服务器现已不再使用单一IP,故IP初始化器不再提供", DiagnosticId = "XFW0002", UrlFormat = "https://docs.xfegzs.com/View/Errors%2FServerInteractive%2FXFW0002")]
45 45 public XFEServerBuilder AddXFEIPInitializer() => xFEServerBuilder.AddInitializer<ServerIPInitializer>();
46 46 }
47 47 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs +3 -2
@@ -1,5 +1,6 @@
1 1 using System.Net;
2 2 using System.Text.Json;
3 using System.Text.RegularExpressions;
3 4 using XFEExtension.NetCore.AutoImplement;
4 5 using XFEExtension.NetCore.DelegateExtension;
5 6 using XFEExtension.NetCore.ServerInteractive.Exceptions;
@@ -78,7 +79,7 @@ public abstract class XFEClientRequester : IRequesterBase
78 79 if (code == HttpStatusCode.OK)
79 80 {
80 81 xFEService.Response = response;
81 xFEService.UnescapedResponse = response;
82 xFEService.UnescapedResponse = Regex.Unescape(response);
82 83 var requestResult = xFEService.AnalyzeResponse();
83 84 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl("Success", code));
84 85 result.Message = "Success";
@@ -118,7 +119,7 @@ public abstract class XFEClientRequester : IRequesterBase
118 119 if (code == HttpStatusCode.OK)
119 120 {
120 121 instance.Response = response;
121 instance.UnescapedResponse = response;
122 instance.UnescapedResponse = Regex.Unescape(response);
122 123 var requestResult = instance.AnalyzeResponse();
123 124 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl("Success", code));
124 125 result.Message = "Success";
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/ServerService/ServerIpInitializer.cs +2 -1
@@ -7,6 +7,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server.Services.Serve
7 7 /// <summary>
8 8 /// 服务器IP初始化服务
9 9 /// </summary>
10 [Obsolete("核心服务器现已不再使用单一IP,故IP初始化器不再提供", DiagnosticId = "XFW0002", UrlFormat = "https://docs.xfegzs.com/View/Errors%2FServerInteractive%2FXFW0002")]
10 11 public class ServerIPInitializer : ServerInitializerServiceBase
11 12 {
12 13 private static int s_nextDefaultPort = 3300;
@@ -32,7 +33,7 @@ public class ServerIPInitializer : ServerInitializerServiceBase
32 33 }
33 34 ServerBaseProfile.ServerLastBindingAddressDictionary[serverCoreService.ServerCoreName] = ipAddress;
34 35 }
35 serverCoreService.BindingIPAddress = ipAddress;
36 serverCoreService.BindingIPAddressList = [];
36 37 Console.WriteLine($"服务器{serverCoreService.ServerCoreName}设置完成!IP为:{ipAddress}");
37 38 }
38 39 ServerBaseProfile.SaveProfile();
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/ServerService/XFECoreServerProcessService.cs +22 -20
@@ -14,35 +14,37 @@ public class XFEServerCoreProcessService : ServerCoreProcessServiceBase
14 14 {
15 15 try
16 16 {
17 Console.WriteLine(File.Exists("server.log") ? "[DEBUG]找到日志文件!" : "[DEBUG]未找到日志文件!");
17 Console.WriteLine(File.Exists("server.log") ? "[DEBUG] 找到日志文件!" : "[DEBUG] 未找到日志文件!");
18 18 var taskList = ServerCoreServiceList.Select(serverCoreService => Task.Run(async () =>
19 19 {
20 20 while (true)
21 21 {
22 22 try
23 23 {
24 Console.WriteLine($"[DEBUG]正在启动服务器:{serverCoreService.ServerCoreName}({serverCoreService.BindingIPAddress})...");
24 var i = 0;
25 Console.WriteLine($"[DEBUG] 正在启动服务器:{serverCoreService.ServerCoreName}...");
26 serverCoreService.BindingIPAddressList.ForEach(ip => Console.WriteLine($"[DEBUG] {serverCoreService.ServerCoreName}绑定IP-{++i}:{ip}"));
25 27 await serverCoreService.StartServerCore();
26 Console.WriteLine($"[ERROR]服务器({serverCoreService.ServerCoreName})因未知原因自行结束!");
27 Console.WriteLine("[DEBUG]准备重启服务器({serverCoreService.ServerCoreName})");
28 Console.WriteLine($"[ERROR] 服务器({serverCoreService.ServerCoreName})因未知原因自行结束!");
29 Console.WriteLine("[DEBUG] 准备重启服务器({serverCoreService.ServerCoreName})");
28 30 await Task.Delay(1000);
29 Console.WriteLine("[DEBUG]正在重启服务器({serverCoreService.ServerCoreName}) 3...");
31 Console.WriteLine("[DEBUG] 正在重启服务器({serverCoreService.ServerCoreName}) 3...");
30 32 await Task.Delay(1000);
31 Console.WriteLine("[DEBUG]正在重启服务器({serverCoreService.ServerCoreName}) 2...");
33 Console.WriteLine("[DEBUG] 正在重启服务器({serverCoreService.ServerCoreName}) 2...");
32 34 await Task.Delay(1000);
33 Console.WriteLine("[DEBUG]正在重启服务器({serverCoreService.ServerCoreName}) 1...");
35 Console.WriteLine("[DEBUG] 正在重启服务器({serverCoreService.ServerCoreName}) 1...");
34 36 }
35 37 catch (Exception ex)
36 38 {
37 Console.WriteLine($"[ERROR]服务器({serverCoreService.ServerCoreName})错误:{ex.Message}:{ex.InnerException?.Message}");
38 Console.WriteLine($"[TRACE]{ex.StackTrace}");
39 Console.WriteLine($"[DEBUG]准备重启服务器({serverCoreService.ServerCoreName})");
39 Console.WriteLine($"[ERROR] 服务器({serverCoreService.ServerCoreName})错误:{ex.Message}:{ex.InnerException?.Message}");
40 Console.WriteLine($"[TRACE] {ex.StackTrace}");
41 Console.WriteLine($"[DEBUG] 准备重启服务器({serverCoreService.ServerCoreName})");
40 42 await Task.Delay(1000);
41 Console.WriteLine($"[DEBUG]正在重启服务器({serverCoreService.ServerCoreName}) 3...");
43 Console.WriteLine($"[DEBUG] 正在重启服务器({serverCoreService.ServerCoreName}) 3...");
42 44 await Task.Delay(1000);
43 Console.WriteLine($"[DEBUG]正在重启服务器({serverCoreService.ServerCoreName}) 2...");
45 Console.WriteLine($"[DEBUG] 正在重启服务器({serverCoreService.ServerCoreName}) 2...");
44 46 await Task.Delay(1000);
45 Console.WriteLine($"[DEBUG]正在重启服务器({serverCoreService.ServerCoreName}) 1...");
47 Console.WriteLine($"[DEBUG] 正在重启服务器({serverCoreService.ServerCoreName}) 1...");
46 48 }
47 49 }
48 50 }))
@@ -51,16 +53,16 @@ public class XFEServerCoreProcessService : ServerCoreProcessServiceBase
51 53 }
52 54 catch (Exception ex)
53 55 {
54 Console.WriteLine($"[DEBUG]服务器错误:{ex}");
55 Console.WriteLine($"[ERROR]服务器错误:{ex.Message}");
56 Console.WriteLine($"[TRACE]{ex.StackTrace}");
57 Console.WriteLine("[DEBUG]准备重启服务器");
56 Console.WriteLine($"[DEBUG] 服务器错误:{ex}");
57 Console.WriteLine($"[ERROR] 服务器错误:{ex.Message}");
58 Console.WriteLine($"[TRACE] {ex.StackTrace}");
59 Console.WriteLine("[DEBUG] 准备重启服务器");
58 60 await Task.Delay(1000);
59 Console.WriteLine("[DEBUG]正在重启服务器 3...");
61 Console.WriteLine("[DEBUG] 正在重启服务器 3...");
60 62 await Task.Delay(1000);
61 Console.WriteLine("[DEBUG]正在重启服务器 2...");
63 Console.WriteLine("[DEBUG] 正在重启服务器 2...");
62 64 await Task.Delay(1000);
63 Console.WriteLine("[DEBUG]正在重启服务器 1...");
65 Console.WriteLine("[DEBUG] 正在重启服务器 1...");
64 66 }
65 67 }
66 68 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs +1 -1
@@ -192,7 +192,7 @@ public abstract class XFEServerCore : ServerCoreServiceBase
192 192 /// <returns></returns>
193 193 public override async Task StartServerCore()
194 194 {
195 CyberCommServer.ServerUrlArray = [BindingIPAddress];
195 CyberCommServer.ServerUrlArray = [.. BindingIPAddressList];
196 196 CyberCommServer.RequestReceived += CyberCommServer_RequestReceived;
197 197 await CyberCommServer.StartCyberCommServer();
198 198 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCoreBuilder.cs +2 -2
@@ -129,8 +129,8 @@ public abstract class XFEServerCoreBuilder : XFEBuilderBase<XFEServerCoreBuilder
129 129 _xFEServerCore.AutoUnescapeJson = xFEServerCoreOptions.AutoUnescapeJson;
130 130 _xFEServerCore.AcceptNonStandardJson = xFEServerCoreOptions.AcceptNonStandardJson;
131 131 _xFEServerCore.GetIPFunction = xFEServerCoreOptions.GetIPFunction;
132 if(!xFEServerCoreOptions.BindingIPAddress.IsNullOrEmpty())
133 _xFEServerCore.BindingIPAddress = xFEServerCoreOptions.BindingIPAddress;
132 if (xFEServerCoreOptions.BindingIPAddress.Count > 0)
133 _xFEServerCore.BindingIPAddressList = xFEServerCoreOptions.BindingIPAddress;
134 134 }
135 135
136 136 if (_xFEServerCore.ServerCoreName.IsNullOrEmpty())
Modified XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj +2 -6
@@ -5,7 +5,7 @@
5 5 <ImplicitUsings>enable</ImplicitUsings>
6 6 <Nullable>enable</Nullable>
7 7 <GenerateDocumentationFile>True</GenerateDocumentationFile>
8 <Version>2.4.0</Version>
8 <Version>2.5.0</Version>
9 9 <Title>XFEExtension.NetCore.ServerInteractive</Title>
10 10 <RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.ServerInteractive</RepositoryUrl>
11 11 <AnalysisLevel>latest</AnalysisLevel>
@@ -21,11 +21,7 @@
21 21 <PackageReleaseNotes>
22 22 ## 调整
23 23
24 重构响应处理,移除自动反转义,接口调整
25
26 重构 IStandardRequestService 及其实现,新增 Response/UnescapedResponse 属性,AnalyzeResponse 方法不再传递参数,统一通过属性获取响应内容。
27 XFEClientRequester 移除 AutoUnescapeResponse 相关逻辑及配置项,响应处理更清晰。
28 版本号升级至 2.4.0。
24 将绑定IP地址改为多IP绑定
29 25
30 26 ## 新增
31 27