|
@@ -15,6 +15,7 @@ using WingServerCommon.Config.Parameters;
|
|
|
using System.Net;
|
|
|
using Newtonsoft.Json;
|
|
|
using WingServerCommon.Mapper;
|
|
|
+using WingInterfaceLibrary.DTO.DistributedServerInfo;
|
|
|
|
|
|
namespace WingCloudServer.InteractionCenter
|
|
|
{
|
|
@@ -32,7 +33,7 @@ namespace WingCloudServer.InteractionCenter
|
|
|
private ITokenDBService _tokenDBService;
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 默认构é€
|
|
|
+ /// 默认构�
|
|
|
/// </summary>
|
|
|
public VinnoServerService()
|
|
|
{
|
|
@@ -133,7 +134,7 @@ namespace WingCloudServer.InteractionCenter
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// åˆ�å§‹åŒ
|
|
|
+ /// �始化
|
|
|
/// </summary>
|
|
|
public override void Load(JsonRpcClientPool jsonRpcClientPool)
|
|
|
{
|
|
@@ -145,7 +146,7 @@ namespace WingCloudServer.InteractionCenter
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// åŠ è½½ServerInfo到内å
|
|
|
+ /// åŠ è½½ServerInfo到内å˜
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
private void LoadDBServerInfo()
|
|
@@ -232,7 +233,7 @@ namespace WingCloudServer.InteractionCenter
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 测速接å�
|
|
|
+ /// 测速接�
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public async Task<EchoResult> EchoAsync()
|
|
@@ -240,5 +241,75 @@ namespace WingCloudServer.InteractionCenter
|
|
|
var echoResult = new EchoResult();
|
|
|
return await Task.FromResult(echoResult);
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 更新�务器IP列表信�
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="request">请求对象</param>
|
|
|
+ /// <returns>是��功</returns>
|
|
|
+ public async Task<bool> UpdateServerIPListAsync(UpdateServerIPListRequest request)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(request.Name) || string.IsNullOrEmpty(request.IpRange)) {
|
|
|
+ Logger.WriteLineError($"UpdateServerIPListAsync Empty Error");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var ipRanges = request.IpRange.Split(new char[2] { '\r', '\n' });
|
|
|
+ ipRanges = ipRanges.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
|
|
|
+ var ipRangeList = new List<IPAddressInfoDTO>();
|
|
|
+ foreach (var ip in ipRanges)
|
|
|
+ {
|
|
|
+ var newIpRange = ip.Split('\t');
|
|
|
+ if (newIpRange.Length < 2)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ var startIp = newIpRange[0];
|
|
|
+ var endIp = newIpRange[1];
|
|
|
+ var longStartIp = IpToLong(startIp);
|
|
|
+ var longEndIp = IpToLong(endIp);
|
|
|
+ var ipAddressInfo = new IPAddressInfoDTO()
|
|
|
+ {
|
|
|
+ StartIp = startIp,
|
|
|
+ EndIp = endIp,
|
|
|
+ LongStartIP = longStartIp,
|
|
|
+ LongEndIP = longEndIp
|
|
|
+ };
|
|
|
+ ipRangeList.Add(ipAddressInfo);
|
|
|
+ }
|
|
|
+ var dbRequest = new UpdateServerIPListRequest() {
|
|
|
+ Name = request.Name,
|
|
|
+ IpRange = request.IpRange
|
|
|
+ };
|
|
|
+ var result = await _distributedServerInfoDBService.UpdateDistributedServerIPListAsync(dbRequest);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Ip转Long
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="ip"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private long IpToLong(string ip)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (System.Net.IPAddress.TryParse(ip, out IPAddress ipAddress))
|
|
|
+ {
|
|
|
+ char[] separator = new char[] { '.' };
|
|
|
+ string[] items = ip.Split(separator);
|
|
|
+ var ipLong = long.Parse(items[0]) << 24 | long.Parse(items[1]) << 16 | long.Parse(items[2]) << 8 | long.Parse(items[3]);
|
|
|
+ return ipLong;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Logger.WriteLineWarn($"IpToLong failed, err ip formatter, ip: {ip}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.WriteLineWarn($"IpToLong failed, ip: {ip}, ex:{ex}");
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|