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处理与接口扩展,升级至1.1.7

本次更新新增了核心服务基类和接口的 ClientIP 与 Handled 属性,支持服务处理过程中获取客户端IP和标记处理状态。XFEServerCore 增加 GetIpFunction 委托,允许自定义IP获取逻辑。XFEServerCoreBuilder 新增 UseCustomIPGetFunction 方法,提升扩展性。服务实例初始化时补充 ClientIP 赋值。版本号升级至 1.1.7,并优化注释与初始化顺序。

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

代码差异

5 个文件 +48 -11
Modified XFEExtension.NetCore.ServerInteractive/Implements/CoreService/XFEServerCoreServiceBase.cs +5 -1
@@ -12,10 +12,14 @@ namespace XFEExtension.NetCore.ServerInteractive.Implements.CoreService;
12 12 public abstract class XFEServerCoreServiceBase : IXFEServerCoreServiceBase
13 13 {
14 14 /// <inheritdoc/>
15 public XFEServerCore XFEServerCore { get; set; }
15 public bool Handled { get => ReturnArgs.Handled; set => ReturnArgs.Handled = value; }
16 /// <inheritdoc/>
17 public string ClientIP { get; set; } = string.Empty;
16 18 /// <inheritdoc/>
17 19 public string Execute { get; set; } = string.Empty;
18 20 /// <inheritdoc/>
21 public XFEServerCore XFEServerCore { get; set; }
22 /// <inheritdoc/>
19 23 public QueryableJsonNode Json { get; set; }
20 24 /// <inheritdoc/>
21 25 public ServerCoreReturnArgs ReturnArgs { get; set; }
Modified XFEExtension.NetCore.ServerInteractive/Interfaces/CoreService/IXFEServerCoreServiceBase.cs +14 -4
@@ -11,14 +11,24 @@ namespace XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
11 11 public interface IXFEServerCoreServiceBase
12 12 {
13 13 /// <summary>
14 /// 服务器核心
14 /// 当前请求的执行语句
15 15 /// </summary>
16 XFEServerCore XFEServerCore { get; set; }
16 string Execute { get; set; }
17 17
18 18 /// <summary>
19 /// 当前请求的执行语句
19 /// 客户端IP地址
20 20 /// </summary>
21 string Execute { get; set; }
21 string ClientIP { get; set; }
22
23 /// <summary>
24 /// 是否已经处理完成
25 /// </summary>
26 bool Handled { get; set; }
27
28 /// <summary>
29 /// 服务器核心
30 /// </summary>
31 XFEServerCore XFEServerCore { get; set; }
22 32
23 33 /// <summary>
24 34 /// 当前请求的 json 节点
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs +10 -2
@@ -25,6 +25,10 @@ public abstract class XFEServerCore : ServerCoreServiceBase
25 25 /// </summary>
26 26 public XFEEventHandler<XFEServerCore, ServerCoreErrorEventArgs>? ServerCoreError { get; set; }
27 27 /// <summary>
28 /// 获取IP地址的函数,默认为从请求事件参数中获取客户端IP地址
29 /// </summary>
30 public Func<CyberCommRequestEventArgs, string> GetIpFunction { get; set; } = args => args.ClientIP;
31 /// <summary>
28 32 /// 核心服务列表
29 33 /// </summary>
30 34 internal List<IServerCoreOriginalService> serverCoreServiceList = [];
@@ -60,6 +64,8 @@ public abstract class XFEServerCore : ServerCoreServiceBase
60 64 {
61 65 Args = e
62 66 };
67 var clientIP = e.ClientIP;
68 try { clientIP = GetIpFunction(e); } catch (Exception ex) { Console.WriteLine($"[WARN]获取IP地址失败:{ex.Message}"); }
63 69 try
64 70 {
65 71 foreach (var serverCoreVerifyService in serverCoreVerifyServiceList)
@@ -112,11 +118,12 @@ public abstract class XFEServerCore : ServerCoreServiceBase
112 118 // inject server core reference and set context
113 119 try
114 120 {
115 serviceInstance.Initialize();
116 121 serviceInstance.XFEServerCore = this;
122 serviceInstance.ClientIP = e.ClientIP;
117 123 serviceInstance.Execute = execute;
118 124 serviceInstance.Json = queryableJsonNode;
119 125 serviceInstance.ReturnArgs = r;
126 serviceInstance.Initialize();
120 127 serviceInstance.RequestReceive();
121 128 await serviceInstance.RequestReceiveAsync();
122 129 }
@@ -143,11 +150,12 @@ public abstract class XFEServerCore : ServerCoreServiceBase
143 150 var instance = factory();
144 151 try
145 152 {
146 instance.Initialize();
147 153 instance.XFEServerCore = this;
154 instance.ClientIP = e.ClientIP;
148 155 instance.Execute = execute;
149 156 instance.Json = queryableJsonNode;
150 157 instance.ReturnArgs = r;
158 instance.Initialize();
151 159 instance.RequestReceive();
152 160 await instance.RequestReceiveAsync();
153 161 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCoreBuilder.cs +12 -0
@@ -1,4 +1,5 @@
1 1 using XFEExtension.NetCore.AutoImplement;
2 using XFEExtension.NetCore.CyberComm;
2 3 using XFEExtension.NetCore.ServerInteractive.Implements;
3 4 using XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
4 5 using XFEExtension.NetCore.StringExtension;
@@ -48,6 +49,17 @@ public abstract class XFEServerCoreBuilder : XFEBuilderBase<XFEServerCoreBuilder
48 49 /// <returns>XFE服务器核心构建器</returns>
49 50 public XFEServerCoreBuilder AddService<T>() where T : IServerCoreOriginalService, new() => AddService(new T());
50 51
52 /// <summary>
53 /// 使用自定义IP获取函数
54 /// </summary>
55 /// <param name="getIpFunction">自定义IP获取函数</param>
56 /// <returns>XFE服务器核心构建器</returns>
57 public XFEServerCoreBuilder UseCustomIPGetFunction(Func<CyberCommRequestEventArgs, string> getIpFunction)
58 {
59 xFEServerCore.GetIpFunction = getIpFunction;
60 return this;
61 }
62
51 63 /// <summary>
52 64 /// 添加校验服务
53 65 /// </summary>
Modified XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj +7 -4
@@ -5,7 +5,7 @@
5 5 <ImplicitUsings>enable</ImplicitUsings>
6 6 <Nullable>enable</Nullable>
7 7 <GenerateDocumentationFile>True</GenerateDocumentationFile>
8 <Version>1.1.6</Version>
8 <Version>1.1.7</Version>
9 9 <Title>XFEExtension.NetCore.ServerInteractive</Title>
10 10 <RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.ServerInteractive</RepositoryUrl>
11 11 <AnalysisLevel>latest</AnalysisLevel>
@@ -20,10 +20,13 @@
20 20 <PackageTags>XFE;Server;服务器;XFEExtension</PackageTags>
21 21 <PackageReleaseNotes>
22 22 ## 调整
23
24 新增用户对象权限校验方法,提升灵活性
25 23
26 增加 ValidateUserPermission 和 ValidatePermission 重载,支持直接传入 IUserInfo 对象进行权限校验,优化权限校验流程。项目版本号升级至 1.1.6。
24 增强核心服务IP处理与接口扩展,升级至1.1.7
25
26 本次更新新增了核心服务基类和接口的 ClientIP 与 Handled 属性,支持服务处理过程中获取客户端IP和标记处理状态。
27 XFEServerCore 增加 GetIpFunction 委托,允许自定义IP获取逻辑。
28 XFEServerCoreBuilder 新增 UseCustomIPGetFunction 方法,提升扩展性。
29 服务实例初始化时补充 ClientIP 赋值。版本号升级至 1.1.7,并优化注释与初始化顺序。
27 30
28 31 ## 新增
29 32