diff --git a/AgileConfig.Server.Apisite/AgileConfig.Server.Apisite.csproj b/AgileConfig.Server.Apisite/AgileConfig.Server.Apisite.csproj
index 652fa0c..8d3b6c3 100644
--- a/AgileConfig.Server.Apisite/AgileConfig.Server.Apisite.csproj
+++ b/AgileConfig.Server.Apisite/AgileConfig.Server.Apisite.csproj
@@ -5,7 +5,7 @@
InProcess
1.5.3.1
1.5.2
- 1.5.3.1
+ 1.5.3.2
Linux
diff --git a/AgileConfig.Server.Apisite/InitService.cs b/AgileConfig.Server.Apisite/InitService.cs
index 57134b2..bb8ba69 100644
--- a/AgileConfig.Server.Apisite/InitService.cs
+++ b/AgileConfig.Server.Apisite/InitService.cs
@@ -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();
+ _eventRegister = scope.ServiceProvider.GetService();
+ _settingService = scope.ServiceProvider.GetService();
+ _serverNodeService = scope.ServiceProvider.GetService();
+ }
}
public Task StartAsync(CancellationToken cancellationToken)
{
if (Appsettings.IsAdminConsoleMode)
{
+ _serverNodeService.InitWatchNodeAsync();
+ _settingService.InitDefaultEnvironment();
_remoteServerNodeProxy.TestEchoAsync();
_eventRegister.Init();
}
diff --git a/AgileConfig.Server.Apisite/appsettings.Development.json b/AgileConfig.Server.Apisite/appsettings.Development.json
index 5c4e9f7..99ff1da 100644
--- a/AgileConfig.Server.Apisite/appsettings.Development.json
+++ b/AgileConfig.Server.Apisite/appsettings.Development.json
@@ -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 // ����ʱ��
}
}
diff --git a/AgileConfig.Server.Apisite/appsettings.json b/AgileConfig.Server.Apisite/appsettings.json
index 0533fd4..774fe9b 100644
--- a/AgileConfig.Server.Apisite/appsettings.json
+++ b/AgileConfig.Server.Apisite/appsettings.json
@@ -7,6 +7,7 @@
}
},
"adminConsole": false,
+ "nodes": "", // ÐèÒª¼à¿ØµÄ½Úµã
"preview_mode": false,
"db": {
"provider": "", //sqlite,mysql,sqlserver,npgsql,oracle
diff --git a/AgileConfig.Server.IService/IServerNodeService.cs b/AgileConfig.Server.IService/IServerNodeService.cs
index 518193a..db97ceb 100644
--- a/AgileConfig.Server.IService/IServerNodeService.cs
+++ b/AgileConfig.Server.IService/IServerNodeService.cs
@@ -17,5 +17,11 @@ namespace AgileConfig.Server.IService
Task UpdateAsync(ServerNode node);
Task> GetAllNodesAsync();
+
+ ///
+ /// æ ¹æ�®appsettings里的nodesé…�ç½®åˆ�始化æœ�务器节点
+ ///
+ ///
+ Task InitWatchNodeAsync();
}
}
diff --git a/AgileConfig.Server.Service/RemoteServerNodeProxy.cs b/AgileConfig.Server.Service/RemoteServerNodeProxy.cs
index cd2fad6..0a044ce 100644
--- a/AgileConfig.Server.Service/RemoteServerNodeProxy.cs
+++ b/AgileConfig.Server.Service/RemoteServerNodeProxy.cs
@@ -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)
diff --git a/AgileConfig.Server.Service/ServerNodeService.cs b/AgileConfig.Server.Service/ServerNodeService.cs
index aac9d26..b16cd8c 100644
--- a/AgileConfig.Server.Service/ServerNodeService.cs
+++ b/AgileConfig.Server.Service/ServerNodeService.cs
@@ -76,5 +76,57 @@ namespace AgileConfig.Server.Service
return result;
}
+
+
+ public async Task InitWatchNodeAsync()
+ {
+ var count = await _dbContext.ServerNodes.Select.CountAsync();
+ if (count > 0)
+ {
+ return false;
+ }
+ var nodes = Global.Config["nodes"];
+ var addresses = new List();
+ 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;
+ }
}
}
diff --git a/AgileConfig.Server.Service/SettingService.cs b/AgileConfig.Server.Service/SettingService.cs
index fa16326..f7df4ab 100644
--- a/AgileConfig.Server.Service/SettingService.cs
+++ b/AgileConfig.Server.Service/SettingService.cs
@@ -143,7 +143,6 @@ namespace AgileConfig.Server.Service
public async Task GetEnvironmentList()
{
- await InitDefaultEnvironment();
var env = await _dbContext.Settings.Where(x => x.Id == DefaultEnvironmentKey).FirstAsync();
return env.Value.ToUpper().Split(',');