mirror of
https://github.com/dotnetcore/AgileConfig.git
synced 2026-10-29 04:56:55 +08:00
可以根据配置初始化监控节点
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
|
||||
<AssemblyVersion>1.5.3.1</AssemblyVersion>
|
||||
<Version>1.5.2</Version>
|
||||
<PackageVersion>1.5.3.1</PackageVersion>
|
||||
<PackageVersion>1.5.3.2</PackageVersion>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -4,24 +4,34 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AgileConfig.Server.IService;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace AgileConfig.Server.Apisite
|
||||
{
|
||||
public class InitService: IHostedService
|
||||
{
|
||||
private IRemoteServerNodeProxy _remoteServerNodeProxy;
|
||||
private IEventRegister _eventRegister;
|
||||
public InitService(IRemoteServerNodeProxy proxy, IEventRegister eventRegister)
|
||||
private readonly IRemoteServerNodeProxy _remoteServerNodeProxy;
|
||||
private readonly IEventRegister _eventRegister;
|
||||
private readonly ISettingService _settingService;
|
||||
private readonly IServerNodeService _serverNodeService;
|
||||
public InitService(IServiceScopeFactory serviceScopeFactory)
|
||||
{
|
||||
_remoteServerNodeProxy = proxy;
|
||||
_eventRegister = eventRegister;
|
||||
using (var scope = serviceScopeFactory.CreateScope())
|
||||
{
|
||||
_remoteServerNodeProxy = scope.ServiceProvider.GetService<IRemoteServerNodeProxy>();
|
||||
_eventRegister = scope.ServiceProvider.GetService<IEventRegister>();
|
||||
_settingService = scope.ServiceProvider.GetService<ISettingService>();
|
||||
_serverNodeService = scope.ServiceProvider.GetService<IServerNodeService>();
|
||||
}
|
||||
}
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
if (Appsettings.IsAdminConsoleMode)
|
||||
{
|
||||
_serverNodeService.InitWatchNodeAsync();
|
||||
_settingService.InitDefaultEnvironment();
|
||||
_remoteServerNodeProxy.TestEchoAsync();
|
||||
_eventRegister.Init();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
}
|
||||
},
|
||||
"adminConsole": true,
|
||||
"nodes": "", // 需要监控的节点
|
||||
"preview_mode": true,
|
||||
"db": {
|
||||
"provider": "sqlite", //sqlite,mysql,sqlserver,npgsql,oracle
|
||||
@@ -28,9 +29,9 @@
|
||||
},
|
||||
|
||||
"JwtSetting": {
|
||||
"SecurityKey": "dfasf343453fsdfa,./,./sdfasf34r3hfhfdb", // 密钥
|
||||
"Issuer": "agileconfig.admin", // 颁发者
|
||||
"Audience": "agileconfig.admin", // 接收者
|
||||
"ExpireSeconds": 86400 // 过期时间
|
||||
"SecurityKey": "dfasf343453fsdfa,./,./sdfasf34r3hfhfdb", // ��Կ
|
||||
"Issuer": "agileconfig.admin", // �䷢��
|
||||
"Audience": "agileconfig.admin", // ������
|
||||
"ExpireSeconds": 86400 // ����ʱ��
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
}
|
||||
},
|
||||
"adminConsole": false,
|
||||
"nodes": "", // 需要监控的节点
|
||||
"preview_mode": false,
|
||||
"db": {
|
||||
"provider": "", //sqlite,mysql,sqlserver,npgsql,oracle
|
||||
|
||||
@@ -17,5 +17,11 @@ namespace AgileConfig.Server.IService
|
||||
Task<bool> UpdateAsync(ServerNode node);
|
||||
|
||||
Task<List<ServerNode>> GetAllNodesAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 根据appsettings里的nodes配置初始化服务器节点
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<bool> InitWatchNodeAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace AgileConfig.Server.Service
|
||||
}
|
||||
}
|
||||
|
||||
private IServerNodeService GetGerverNodeService()
|
||||
private IServerNodeService GetServerNodeService()
|
||||
{
|
||||
return new ServerNodeService(new FreeSqlContext(FreeSQL.Instance));
|
||||
}
|
||||
@@ -222,7 +222,7 @@ namespace AgileConfig.Server.Service
|
||||
|
||||
public async Task TestEchoAsync(string address)
|
||||
{
|
||||
using var service = GetGerverNodeService();
|
||||
using var service = GetServerNodeService();
|
||||
var node = await service.GetAsync(address);
|
||||
try
|
||||
{
|
||||
@@ -251,7 +251,7 @@ namespace AgileConfig.Server.Service
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
using var service = GetGerverNodeService();
|
||||
using var service = GetServerNodeService();
|
||||
var nodes = await service.GetAllNodesAsync();
|
||||
|
||||
foreach (var node in nodes)
|
||||
|
||||
@@ -76,5 +76,57 @@ namespace AgileConfig.Server.Service
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public async Task<bool> InitWatchNodeAsync()
|
||||
{
|
||||
var count = await _dbContext.ServerNodes.Select.CountAsync();
|
||||
if (count > 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var nodes = Global.Config["nodes"];
|
||||
var addresses = new List<string>();
|
||||
if (!string.IsNullOrEmpty(nodes))
|
||||
{
|
||||
var arr = nodes.Split(',');
|
||||
foreach (var item in arr)
|
||||
{
|
||||
var address = "";
|
||||
if (item.StartsWith("http", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
address = item;
|
||||
}
|
||||
else
|
||||
{
|
||||
address = "http://" + item;
|
||||
}
|
||||
|
||||
addresses.Add(address);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var address in addresses)
|
||||
{
|
||||
var node = await _dbContext.ServerNodes.Where(n => n.Address == address).ToOneAsync();
|
||||
if (node == null)
|
||||
{
|
||||
node = new ServerNode()
|
||||
{
|
||||
Address = address,
|
||||
CreateTime = DateTime.Now,
|
||||
};
|
||||
await _dbContext.ServerNodes.AddAsync(node);
|
||||
}
|
||||
}
|
||||
|
||||
var result = 0;
|
||||
if (addresses.Count > 0)
|
||||
{
|
||||
result = await _dbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
return result > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,6 @@ namespace AgileConfig.Server.Service
|
||||
|
||||
public async Task<string[]> GetEnvironmentList()
|
||||
{
|
||||
await InitDefaultEnvironment();
|
||||
var env = await _dbContext.Settings.Where(x => x.Id == DefaultEnvironmentKey).FirstAsync();
|
||||
|
||||
return env.Value.ToUpper().Split(',');
|
||||
|
||||
Reference in New Issue
Block a user