diff --git a/Stardust.Server/Controllers/AppController.cs b/Stardust.Server/Controllers/AppController.cs
index 4cd09b1..cd519cb 100644
--- a/Stardust.Server/Controllers/AppController.cs
+++ b/Stardust.Server/Controllers/AppController.cs
@@ -21,35 +21,17 @@ namespace Stardust.Server.Controllers;
/// <summary>应用接口控制器</summary>
[ApiController]
[Route("[controller]")]
-public class AppController : BaseController
+public class AppController(TokenService tokenService, RegistryService registryService, DeployService deployService, AppSessionManager sessionManager, StarServerSetting setting, IServiceProvider serviceProvider, ITracer tracer) : BaseController(serviceProvider)
{
private App _app;
private String _clientId;
- private readonly TokenService _tokenService;
- private readonly RegistryService _registryService;
- private readonly DeployService _deployService;
- private readonly ITracer _tracer;
- private readonly AppQueueService _queue;
- private readonly AppSessionManager _sessionManager;
- private readonly StarServerSetting _setting;
-
- public AppController(TokenService tokenService, RegistryService registryService, DeployService deployService, AppQueueService queue, AppSessionManager sessionManager, StarServerSetting setting, IServiceProvider serviceProvider, ITracer tracer) : base(serviceProvider)
- {
- _tokenService = tokenService;
- _registryService = registryService;
- _deployService = deployService;
- _queue = queue;
- _sessionManager = sessionManager;
- _setting = setting;
- _tracer = tracer;
- }
#region 令牌验证
protected override Boolean OnAuthorize(String token)
{
ManageProvider.UserHost = UserHost;
- var (jwt, app) = _tokenService.DecodeToken(token, _setting.TokenSecret);
+ var (jwt, app) = tokenService.DecodeToken(token, setting.TokenSecret);
_app = app;
_clientId = jwt.Id;
@@ -75,29 +57,29 @@ public class AppController : BaseController
[HttpPost(nameof(Login))]
public LoginResponse Login(AppModel model)
{
- var set = _setting;
+ var set = setting;
var ip = UserHost;
var app = App.FindByName(model.AppId);
var oldSecret = app?.Secret;
_app = app;
// 设备不存在或者验证失败,执行注册流程
- if (app != null && !_registryService.Auth(app, model.Secret, ip, model.ClientId, set))
+ if (app != null && !registryService.Auth(app, model.Secret, ip, model.ClientId, set))
{
app = null;
}
var clientId = model.ClientId;
- app ??= _registryService.Register(model.AppId, model.Secret, set.AppAutoRegister, ip, clientId);
+ app ??= registryService.Register(model.AppId, model.Secret, set.AppAutoRegister, ip, clientId);
_app = app ?? throw new ApiException(ApiCode.Unauthorized, "应用鉴权失败");
- _registryService.Login(app, model, ip, _setting);
+ registryService.Login(app, model, ip, setting);
- var tokenModel = _tokenService.IssueToken(app.Name, set.TokenSecret, set.TokenExpire, clientId);
+ var tokenModel = tokenService.IssueToken(app.Name, set.TokenSecret, set.TokenExpire, clientId);
- var online = _registryService.SetOnline(_app, model, ip, clientId, Token);
+ var online = registryService.SetOnline(_app, model, ip, clientId, Token);
- _deployService.UpdateDeployNode(online);
+ deployService.UpdateDeployNode(online);
var rs = new LoginResponse
{
@@ -122,10 +104,10 @@ public class AppController : BaseController
public String Register(AppModel inf)
{
var ip = UserHost;
- var online = _registryService.SetOnline(_app, inf, ip, inf.ClientId, Token);
+ var online = registryService.SetOnline(_app, inf, ip, inf.ClientId, Token);
_app.WriteHistory(nameof(Register), true, inf.ToJson(), inf.Version, ip, inf.ClientId);
- _deployService.UpdateDeployNode(online);
+ deployService.UpdateDeployNode(online);
return _app?.ToString();
}
@@ -137,7 +119,7 @@ public class AppController : BaseController
[HttpPost(nameof(Logout))]
public LoginResponse Logout(String reason)
{
- if (_app != null) _registryService.Logout(_app, _clientId, reason, UserHost);
+ if (_app != null) registryService.Logout(_app, _clientId, reason, UserHost);
return new LoginResponse
{
@@ -157,9 +139,9 @@ public class AppController : BaseController
};
var ip = UserHost;
- var online = _registryService.Ping(app, inf, ip, _clientId, Token);
+ var online = registryService.Ping(app, inf, ip, _clientId, Token);
AppMeter.WriteData(app, inf, "Ping", _clientId, ip);
- _deployService.UpdateDeployNode(online);
+ deployService.UpdateDeployNode(online);
if (app != null)
{
@@ -167,11 +149,11 @@ public class AppController : BaseController
// 令牌有效期检查,10分钟内到期的令牌,颁发新令牌,以获取业务的连续性。
//todo 这里将来由客户端提交刷新令牌,才能颁发新的访问令牌。
- var set = _setting;
- var tm = _tokenService.ValidAndIssueToken(app.Name, Token, set.TokenSecret, set.TokenExpire, _clientId);
+ var set = setting;
+ var tm = tokenService.ValidAndIssueToken(app.Name, Token, set.TokenSecret, set.TokenExpire, _clientId);
if (tm != null)
{
- using var span = _tracer?.NewSpan("RefreshAppToken", new { app.Name, app.DisplayName });
+ using var span = tracer?.NewSpan("RefreshAppToken", new { app.Name, app.DisplayName });
rs.Token = tm.AccessToken;
@@ -182,7 +164,7 @@ public class AppController : BaseController
{
// 拉取命令
if (ver.Build >= 2024 && ver.Revision >= 801)
- rs.Commands = _registryService.AcquireAppCommands(app.Id);
+ rs.Commands = registryService.AcquireAppCommands(app.Id);
}
}
@@ -249,7 +231,7 @@ public class AppController : BaseController
Log = this,
SetOnline = online => SetOnline(clientId, online)
};
- _sessionManager.Add(session);
+ sessionManager.Add(session);
await session.WaitAsync(HttpContext, cancellationToken).ConfigureAwait(false);
}
@@ -291,7 +273,7 @@ public class AppController : BaseController
if (app.AllowControlNodes != "*" && !target.Name.EqualIgnoreCase(app.AllowControlNodes.Split(",")))
throw new ApiException(ApiCode.Forbidden, $"[{app}]无权操作应用[{target}]!\n安全设计需要,默认禁止所有应用向其它应用发送控制指令。\n可在注册中心应用系统中修改[{app}]的可控节点,添加[{target.Name}],或者设置为*所有应用。");
- var cmd = await _registryService.SendCommand(target, clientId, model, app + "");
+ var cmd = await registryService.SendCommand(target, clientId, model, app + "");
return cmd.Id;
}
@@ -304,7 +286,7 @@ public class AppController : BaseController
{
if (_app == null) throw new ApiException(ApiCode.Unauthorized, "节点未登录");
- var cmd = _registryService.CommandReply(_app, model);
+ var cmd = registryService.CommandReply(_app, model);
return cmd != null ? 1 : 0;
}
@@ -330,12 +312,12 @@ public class AppController : BaseController
var app = _app;
var info = GetService(model.ServiceName);
- var (svc, changed) = _registryService.RegisterService(app, info, model, UserHost);
+ var (svc, changed) = registryService.RegisterService(app, info, model, UserHost);
// 发布消息通知消费者
if (changed)
{
- await _registryService.NotifyConsumers(svc, "registry/register", app + "");
+ await registryService.NotifyConsumers(svc, "registry/register", app + "");
}
return svc?.ToModel();
@@ -347,12 +329,12 @@ public class AppController : BaseController
var app = _app;
var info = GetService(model.ServiceName);
- var (svc, changed) = _registryService.UnregisterService(app, info, model, UserHost);
+ var (svc, changed) = registryService.UnregisterService(app, info, model, UserHost);
// 发布消息通知消费者
if (changed)
{
- await _registryService.NotifyConsumers(svc, "registry/unregister", app + "");
+ await registryService.NotifyConsumers(svc, "registry/unregister", app + "");
}
return svc?.ToModel();
@@ -401,7 +383,7 @@ public class AppController : BaseController
info.Consumers = consumes.Count;
info.Save();
- var models = _registryService.ResolveService(info, model, svc.Scope);
+ var models = registryService.ResolveService(info, model, svc.Scope);
// 记录应用消费服务得到的地址
svc.Address = models?.Select(e => new { e.Address }).ToArray().ToJson();
diff --git a/Stardust.Server/Controllers/DeployController.cs b/Stardust.Server/Controllers/DeployController.cs
index e12bbe0..6aa835d 100644
--- a/Stardust.Server/Controllers/DeployController.cs
+++ b/Stardust.Server/Controllers/DeployController.cs
@@ -14,29 +14,17 @@ namespace Stardust.Server.Controllers;
/// <summary>发布中心服务</summary>
[ApiFilter]
[Route("[controller]/[action]")]
-public class DeployController : BaseController
+public class DeployController(DeployService deployService, NodeService nodeService, StarServerSetting setting, IServiceProvider serviceProvider) : BaseController(serviceProvider)
{
private Node _node;
private String _clientId;
- private readonly NodeService _nodeService;
- private readonly DeployService _deployService;
- private readonly TokenService _tokenService;
- private readonly StarServerSetting _setting;
-
- public DeployController(DeployService deployService, NodeService nodeService, TokenService tokenService, StarServerSetting setting, IServiceProvider serviceProvider) : base(serviceProvider)
- {
- _deployService = deployService;
- _nodeService = nodeService;
- _tokenService = tokenService;
- _setting = setting;
- }
#region 令牌验证
protected override Boolean OnAuthorize(String token)
{
ManageProvider.UserHost = UserHost;
- var (jwt, node, ex) = _nodeService.DecodeToken(token, _setting.TokenSecret);
+ var (jwt, node, ex) = nodeService.DecodeToken(token, setting.TokenSecret);
_node = node;
_clientId = jwt.Id;
if (ex != null) throw ex;
@@ -75,7 +63,7 @@ public class DeployController : BaseController
// 修正旧的用户名
deployNode.FixOldUserName();
- var inf = _deployService.BuildDeployInfo(deployNode, _node);
+ var inf = deployService.BuildDeployInfo(deployNode, _node);
if (inf == null) continue;
rs.Add(inf);
@@ -165,7 +153,7 @@ public class DeployController : BaseController
/// <param name="inf"></param>
/// <returns></returns>
[HttpPost]
- public Int32 Ping([FromBody] AppInfo inf) => _deployService.Ping(_node, inf, UserHost);
+ public Int32 Ping([FromBody] AppInfo inf) => deployService.Ping(_node, inf, UserHost);
/// <summary>获取分配到本节点的应用发布任务</summary>
public BuildTask GetBuildTask(Int32 deployId, String deployName, String appName)
@@ -211,6 +199,6 @@ public class DeployController : BaseController
}
#region 辅助
- private void WriteHistory(Int32 appId, String action, Boolean success, String remark) => _deployService.WriteHistory(appId, _node?.ID ?? 0, action, success, remark, UserHost);
+ private void WriteHistory(Int32 appId, String action, Boolean success, String remark) => deployService.WriteHistory(appId, _node?.ID ?? 0, action, success, remark, UserHost);
#endregion
}
\ No newline at end of file
diff --git a/Stardust.Server/Controllers/NodeController.cs b/Stardust.Server/Controllers/NodeController.cs
index 8d6943a..fd71147 100644
--- a/Stardust.Server/Controllers/NodeController.cs
+++ b/Stardust.Server/Controllers/NodeController.cs
@@ -22,33 +22,17 @@ namespace Stardust.Server.Controllers;
[ApiController]
[Route("[controller]")]
-public class NodeController : BaseController
+public class NodeController(NodeService nodeService, TokenService tokenService, NodeSessionManager sessionManager, StarServerSetting setting, IServiceProvider serviceProvider, ITracer tracer, IOptions<JsonOptions> jsonOptions) : BaseController(serviceProvider)
{
private Node _node;
private String _clientId;
- private readonly ITracer _tracer;
- private readonly IOptions<JsonOptions> _jsonOptions;
- private readonly NodeService _nodeService;
- private readonly TokenService _tokenService;
- private readonly NodeSessionManager _sessionManager;
- private readonly StarServerSetting _setting;
-
- public NodeController(NodeService nodeService, TokenService tokenService, NodeSessionManager sessionManager, StarServerSetting setting, IServiceProvider serviceProvider, ITracer tracer, IOptions<JsonOptions> jsonOptions) : base(serviceProvider)
- {
- _tracer = tracer;
- _jsonOptions = jsonOptions;
- _nodeService = nodeService;
- _tokenService = tokenService;
- _sessionManager = sessionManager;
- _setting = setting;
- }
#region 令牌验证
protected override Boolean OnAuthorize(String token)
{
ManageProvider.UserHost = UserHost;
- var (jwt, node, ex) = _nodeService.DecodeToken(token, _setting.TokenSecret);
+ var (jwt, node, ex) = nodeService.DecodeToken(token, setting.TokenSecret);
_node = node;
_clientId = jwt.Id;
if (ex != null) throw ex;
@@ -73,7 +57,7 @@ public class NodeController : BaseController
public LoginResponse Login(JsonElement data)
{
// 由于客户端的多样性,这里需要手工控制序列化。某些客户端的节点信息跟密钥信息在同一层级。
- var options = _jsonOptions.Value.JsonSerializerOptions;
+ var options = jsonOptions.Value.JsonSerializerOptions;
var inf = data.Deserialize<LoginInfo>(options);
if (inf.Node == null || inf.Node.UUID.IsNullOrEmpty() && inf.Node.MachineGuid.IsNullOrEmpty() && inf.Node.Macs.IsNullOrEmpty())
{
@@ -102,16 +86,16 @@ public class NodeController : BaseController
}
// 设备不存在或者验证失败,执行注册流程
- if (node != null && !_nodeService.Auth(node, inf.Secret, inf, ip, _setting))
+ if (node != null && !nodeService.Auth(node, inf.Secret, inf, ip, setting))
{
node = null;
}
- node ??= _nodeService.Register(inf, ip, _setting);
+ node ??= nodeService.Register(inf, ip, setting);
if (node == null) throw new ApiException(ApiCode.Unauthorized, "节点鉴权失败");
- var tokenModel = _nodeService.Login(node, inf, ip, _setting);
+ var tokenModel = nodeService.Login(node, inf, ip, setting);
var rs = new LoginResponse
{
@@ -136,7 +120,7 @@ public class NodeController : BaseController
[HttpPost(nameof(Logout))]
public LoginResponse Logout(String reason)
{
- if (_node != null) _nodeService.Logout(_node, reason, UserHost);
+ if (_node != null) nodeService.Logout(_node, reason, UserHost);
return new LoginResponse
{
@@ -157,7 +141,7 @@ public class NodeController : BaseController
ServerTime = DateTime.UtcNow.ToLong(),
};
- var online = _nodeService.Ping(node, inf, Token, UserHost);
+ var online = nodeService.Ping(node, inf, Token, UserHost);
if (node != null)
{
@@ -169,11 +153,11 @@ public class NodeController : BaseController
// 令牌有效期检查,10分钟内到期的令牌,颁发新令牌,以获取业务的连续性。
//todo 这里将来由客户端提交刷新令牌,才能颁发新的访问令牌。
- var set = _setting;
- var tm = _tokenService.ValidAndIssueToken(node.Code, Token, set.TokenSecret, set.TokenExpire, _clientId);
+ var set = setting;
+ var tm = tokenService.ValidAndIssueToken(node.Code, Token, set.TokenSecret, set.TokenExpire, _clientId);
if (tm != null)
{
- using var span = _tracer?.NewSpan("RefreshNodeToken", new { node.Code, node.Name });
+ using var span = tracer?.NewSpan("RefreshNodeToken", new { node.Code, node.Name });
rs.Token = tm.AccessToken;
@@ -184,7 +168,7 @@ public class NodeController : BaseController
{
// 拉取命令
if (ver.Build >= 2023 && ver.Revision >= 107)
- rs.Commands = _nodeService.AcquireNodeCommands(node.ID);
+ rs.Commands = nodeService.AcquireNodeCommands(node.ID);
}
}
@@ -210,10 +194,10 @@ public class NodeController : BaseController
var p = uri.IndexOf('/', "https://".Length);
if (p > 0) uri = uri[..p];
- var pv = _nodeService.Upgrade(node, channel, UserHost);
+ var pv = nodeService.Upgrade(node, channel, UserHost);
if (pv == null)
{
- _nodeService.CheckDotNet(node, new Uri(uri), UserHost);
+ nodeService.CheckDotNet(node, new Uri(uri), UserHost);
return null;
}
@@ -332,7 +316,7 @@ public class NodeController : BaseController
/// <param name="model">服务</param>
/// <returns></returns>
[HttpPost(nameof(CommandReply))]
- public Int32 CommandReply(CommandReplyModel model) => _node == null ? throw new ApiException(ApiCode.Unauthorized, "节点未登录") : _nodeService.CommandReply(_node, model, Token);
+ public Int32 CommandReply(CommandReplyModel model) => _node == null ? throw new ApiException(ApiCode.Unauthorized, "节点未登录") : nodeService.CommandReply(_node, model, Token);
#endregion
#region 下行通知
@@ -344,11 +328,10 @@ public class NodeController : BaseController
if (HttpContext.WebSockets.IsWebSocketRequest)
{
var ip = UserHost;
- var token = (HttpContext.Request.Headers["Authorization"] + "").TrimStart("Bearer ");
using var socket = await HttpContext.WebSockets.AcceptWebSocketAsync();
try
{
- await HandleNotify(socket, token, ip, HttpContext.RequestAborted);
+ await HandleNotify(socket, _node, Token, ip, HttpContext.RequestAborted);
}
catch (Exception ex)
{
@@ -364,26 +347,22 @@ public class NodeController : BaseController
}
}
- private async Task HandleNotify(WebSocket socket, String token, String ip, CancellationToken cancellationToken)
+ private async Task HandleNotify(WebSocket socket, Node node, String token, String ip, CancellationToken cancellationToken)
{
- var (_, node, error) = _nodeService.DecodeToken(token, _setting.TokenSecret);
- _node = node ?? throw new ApiException(ApiCode.Unauthorized, $"未登录![ip={ip}]");
- if (error != null) throw error;
-
using var session = new NodeCommandSession(socket)
{
Code = node.Code,
Log = this,
SetOnline = online => SetOnline(node, token, ip, online)
};
- _sessionManager.Add(session);
+ sessionManager.Add(session);
await session.WaitAsync(HttpContext, cancellationToken).ConfigureAwait(false);
}
private void SetOnline(Node node, String token, String ip, Boolean online)
{
- var olt = _nodeService.GetOrAddOnline(node, token, ip);
+ var olt = nodeService.GetOrAddOnline(node, token, ip);
if (olt != null)
{
olt.WebSocket = online;
@@ -402,7 +381,7 @@ public class NodeController : BaseController
if (model.Code.IsNullOrEmpty()) throw new ArgumentNullException(nameof(model.Code), "必须指定节点");
if (model.Command.IsNullOrEmpty()) throw new ArgumentNullException(nameof(model.Command));
- var cmd = await _nodeService.SendCommand(model, token, _setting);
+ var cmd = await nodeService.SendCommand(model, token, setting);
return cmd.Id;
}
diff --git a/Stardust.Server/Services/NodeService.cs b/Stardust.Server/Services/NodeService.cs
index 78bdea0..4eba964 100644
--- a/Stardust.Server/Services/NodeService.cs
+++ b/Stardust.Server/Services/NodeService.cs
@@ -14,23 +14,8 @@ using XCode.Configuration;
namespace Stardust.Server.Services;
-public class NodeService
+public class NodeService(TokenService tokenService, IPasswordProvider passwordProvider, NodeSessionManager sessionManager, ICacheProvider cacheProvider, ITracer tracer)
{
- private readonly TokenService _tokenService;
- private readonly IPasswordProvider _passwordProvider;
- private readonly NodeSessionManager _sessionManager;
- private readonly ICacheProvider _cacheProvider;
- private readonly ITracer _tracer;
-
- public NodeService(TokenService tokenService, IPasswordProvider passwordProvider, NodeSessionManager sessionManager, ICacheProvider cacheProvider, ITracer tracer)
- {
- _tokenService = tokenService;
- _passwordProvider = passwordProvider;
- _sessionManager = sessionManager;
- _cacheProvider = cacheProvider;
- _tracer = tracer;
- }
-
#region 注册&登录
public Boolean Auth(Node node, String secret, LoginInfo inf, String ip, StarServerSetting setting)
{
@@ -47,12 +32,12 @@ public class NodeService
if (node.Secret == secret) return true;
//return !secret.IsNullOrEmpty() && !secret.IsNullOrEmpty() && (node.Secret == secret || node.Secret.MD5() == secret);
- if (setting.SaltTime > 0 && _passwordProvider is SaltPasswordProvider saltProvider)
+ if (setting.SaltTime > 0 && passwordProvider is SaltPasswordProvider saltProvider)
{
// 使用盐值偏差时间,允许客户端时间与服务端时间有一定偏差
saltProvider.SaltTime = setting.SaltTime;
}
- if (secret.IsNullOrEmpty() || !_passwordProvider.Verify(node.Secret, secret))
+ if (secret.IsNullOrEmpty() || !passwordProvider.Verify(node.Secret, secret))
{
WriteHistory(node, "节点鉴权", false, "密钥校验失败", ip);
return false;
@@ -105,7 +90,7 @@ public class NodeService
node.Login(inf.Node, ip);
// 设置令牌
- var tokenModel = _tokenService.IssueToken(node.Code, setting.TokenSecret, setting.TokenExpire, inf.ClientId);
+ var tokenModel = tokenService.IssueToken(node.Code, setting.TokenSecret, setting.TokenExpire, inf.ClientId);
// 在线记录
var olt = GetOrAddOnline(node, tokenModel.AccessToken, ip);
@@ -252,7 +237,7 @@ public class NodeService
//var ip = UserHost;
if (!IsMatchWhiteIP(set.WhiteIP, ip)) throw new ApiException(ApiCode.Forbidden, "非法来源,禁止注册");
- using var span = _tracer?.NewSpan(nameof(AutoRegister), new { inf.ProductCode, inf.Node });
+ using var span = tracer?.NewSpan(nameof(AutoRegister), new { inf.ProductCode, inf.Node });
var di = inf.Node;
var code = BuildCode(di, inf.ProductCode, set);
@@ -389,7 +374,7 @@ public class NodeService
private String BuildCode(NodeInfo di, String productCode, StarServerSetting set)
{
- using var span = _tracer?.NewSpan(nameof(BuildCode), new { set.NodeCodeFormula });
+ using var span = tracer?.NewSpan(nameof(BuildCode), new { set.NodeCodeFormula });
//var set = Setting.Current;
//var uid = $"{di.UUID}@{di.MachineGuid}@{di.Macs}";
@@ -517,7 +502,7 @@ public class NodeService
// 是否有本节点
if (!_commands.Any(e => e.NodeID == nodeId)) return null;
- using var span = _tracer?.NewSpan(nameof(AcquireNodeCommands), new { nodeId });
+ using var span = tracer?.NewSpan(nameof(AcquireNodeCommands), new { nodeId });
var cmds = NodeCommand.AcquireCommands(nodeId, 100);
if (cmds.Count == 0) return null;
@@ -569,7 +554,7 @@ public class NodeService
{
//var sid = $"{node.ID}@{ip}";
var sid = node.Code;
- var olt = _cacheProvider.InnerCache.Get<NodeOnline>($"NodeOnline:{sid}");
+ var olt = cacheProvider.InnerCache.Get<NodeOnline>($"NodeOnline:{sid}");
if (olt != null)
{
//_cacheProvider.InnerCache.SetExpire($"NodeOnline:{sid}", TimeSpan.FromSeconds(120));
@@ -624,7 +609,7 @@ public class NodeService
public void UpdateOnline(Node node, NodeOnline online)
{
var sid = node.Code;
- _cacheProvider.InnerCache.Set($"NodeOnline:{sid}", online, 120);
+ cacheProvider.InnerCache.Set($"NodeOnline:{sid}", online, 120);
}
/// <summary>删除在线状态</summary>
@@ -632,7 +617,7 @@ public class NodeService
public void RemoveOnline(Node node)
{
var sid = node.Code;
- _cacheProvider.InnerCache.Remove($"NodeOnline:{sid}");
+ cacheProvider.InnerCache.Remove($"NodeOnline:{sid}");
}
#endregion
@@ -651,10 +636,10 @@ public class NodeService
// 通知命令发布者,指令已完成
var topic = $"nodereply:{cmd.Id}";
- var q = _cacheProvider.GetQueue<CommandReplyModel>(topic);
+ var q = cacheProvider.GetQueue<CommandReplyModel>(topic);
q.Add(model);
- _cacheProvider.Cache.SetExpire(topic, TimeSpan.FromSeconds(60));
+ cacheProvider.Cache.SetExpire(topic, TimeSpan.FromSeconds(60));
return 1;
}
@@ -675,7 +660,7 @@ public class NodeService
list = list.Where(e => e.ProductCode.IsNullOrEmpty() || e.ProductCode.EqualIgnoreCase(node.ProductCode)).ToList();
if (list.Count == 0) return null;
- using var span = _tracer?.NewSpan(nameof(Upgrade), new { node.Name, node.Code, node.Runtime, node.Framework, node.Frameworks, ip, vers = list.Count });
+ using var span = tracer?.NewSpan(nameof(Upgrade), new { node.Name, node.Code, node.Runtime, node.Framework, node.Frameworks, ip, vers = list.Count });
// 应用过滤规则,使用最新的一个版本
var pv = list.OrderByDescending(e => e.ID).FirstOrDefault(e => e.Version != node.LastVersion && e.Match(node));
@@ -704,7 +689,7 @@ public class NodeService
var list = NodeVersion.GetValids(0).Where(e => e.ProductCode.EqualIgnoreCase("dotNet")).ToList();
if (list.Count == 0) return null;
- using var span = _tracer?.NewSpan(nameof(CheckDotNet), new { node.Name, node.Code, node.Runtime, node.Framework, node.Frameworks, ip, vers = list.Count });
+ using var span = tracer?.NewSpan(nameof(CheckDotNet), new { node.Name, node.Code, node.Runtime, node.Framework, node.Frameworks, ip, vers = list.Count });
// 应用过滤规则
list = list.OrderByDescending(e => e.ID).Where(e => e.Match(node)).ToList();
@@ -733,8 +718,8 @@ public class NodeService
// 检查是否已经升级过这个版本
var key = $"nodeNet:{node.Code}-{fmodel.Version}";
- if (_cacheProvider.Cache.Get<String>(key) == pv.Version) return null;
- _cacheProvider.Cache.Set(key, pv.Version, 600);
+ if (cacheProvider.Cache.Get<String>(key) == pv.Version) return null;
+ cacheProvider.Cache.Set(key, pv.Version, 600);
var model = new CommandInModel
{
@@ -767,7 +752,7 @@ public class NodeService
var node = Node.FindByCode(model.Code);
if (node == null) throw new ArgumentOutOfRangeException(nameof(model.Code), "无效节点");
- var (_, app) = _tokenService.DecodeToken(token, setting.TokenSecret);
+ var (_, app) = tokenService.DecodeToken(token, setting.TokenSecret);
if (app == null || app.AllowControlNodes.IsNullOrEmpty()) throw new ApiException(ApiCode.Unauthorized, "无权操作!");
if (app.AllowControlNodes != "*" && !node.Code.EqualIgnoreCase(app.AllowControlNodes.Split(",")))
@@ -803,17 +788,17 @@ public class NodeService
//var queue = _cacheProvider.GetQueue<String>($"nodecmd:{node.Code}");
//queue.Add(commandModel.ToJson());
- _sessionManager.PublishAsync(node.Code, commandModel, null, default).ConfigureAwait(false).GetAwaiter().GetResult();
+ sessionManager.PublishAsync(node.Code, commandModel, null, default).ConfigureAwait(false).GetAwaiter().GetResult();
// 挂起等待。借助redis队列,等待响应
if (model.Timeout > 0)
{
- var q = _cacheProvider.GetQueue<CommandReplyModel>($"nodereply:{cmd.Id}");
+ var q = cacheProvider.GetQueue<CommandReplyModel>($"nodereply:{cmd.Id}");
var reply = await q.TakeOneAsync(model.Timeout);
if (reply != null)
{
// 埋点
- using var span = _tracer?.NewSpan($"mq:NodeCommandReply", reply);
+ using var span = tracer?.NewSpan($"mq:NodeCommandReply", reply);
if (reply.Status == CommandStatus.错误)
throw new Exception($"命令错误!{reply.Data}");