Эх сурвалжийг харах

最快服务器数据接口

denny 2 жил өмнө
parent
commit
d2511ef5d6

+ 9 - 8
src/InteractionCenter/VinnoServerService.cs

@@ -16,6 +16,8 @@ using System.Net;
 using Newtonsoft.Json;
 using WingServerCommon.Mapper;
 using WingInterfaceLibrary.DTO.DistributedServerInfo;
+using WingInterfaceLibrary.Interface;
+using WingInterfaceLibrary.DB.Request;
 
 namespace WingCloudServer.InteractionCenter
 {
@@ -134,7 +136,7 @@ namespace WingCloudServer.InteractionCenter
         }
 
         /// <summary>
-        /// åˆ�始åŒ
+        /// �始�
         /// </summary>
         public override void Load(JsonRpcClientPool jsonRpcClientPool)
         {
@@ -146,7 +148,7 @@ namespace WingCloudServer.InteractionCenter
         }
 
         /// <summary>
-        /// 加载ServerInfo到内å­
+        /// 加载ServerInfo到内�
         /// </summary>
         /// <returns></returns>
         private void LoadDBServerInfo()
@@ -249,16 +251,15 @@ namespace WingCloudServer.InteractionCenter
         /// <returns>是��功</returns>
         public async Task<bool> UpdateServerIPListAsync(UpdateServerIPListRequest request)
         {
-            if (string.IsNullOrEmpty(request.Name) || string.IsNullOrEmpty(request.IpRange)) {
+            if (string.IsNullOrEmpty(request.Name) || request.IpRange == null || request.IpRange.Count <= 0) {
                 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 ipRanges = request.IpRange;
             var ipRangeList = new List<IPAddressInfoDTO>();
             foreach (var ip in ipRanges)
             {
-                var newIpRange = ip.Split('\t');
+                var newIpRange = ip.Split(' ');
                 if (newIpRange.Length < 2)
                 {
                     continue;
@@ -276,9 +277,9 @@ namespace WingCloudServer.InteractionCenter
                 };
                 ipRangeList.Add(ipAddressInfo);
             }
-            var dbRequest = new UpdateServerIPListRequest() {
+            var dbRequest = new UpdateServerInfoDBRequest() {
                 Name = request.Name,
-                IpRange = request.IpRange
+                IpRangeList = ipRangeList
             };
             var result = await _distributedServerInfoDBService.UpdateDistributedServerIPListAsync(dbRequest);
             return result;

+ 28 - 28
src/Plugin/ServerListPlugin.cs

@@ -56,7 +56,7 @@ namespace WingCloudServer.Plugin
         private const string _taiwan = "台湾";
 
         /// <summary>
-        /// 初始�
+        /// 初始�
         /// </summary>
         public override void Load(JsonRpcClientPool jsonRpcClientPool)
         {
@@ -65,9 +65,9 @@ namespace WingCloudServer.Plugin
         }
 
         /// <summary>
-        /// 前处�
+        /// 前处�
         /// </summary>
-        /// <param name="context">上下�/param>
+        /// <param name="context">上下�/param>
         /// <param name="requestData">请求参数</param>
         /// <returns></returns>
         public PluginProcessResult PreProcess(IJsonRpcHttpContext context, byte[] requestData)
@@ -79,9 +79,9 @@ namespace WingCloudServer.Plugin
         }
 
         /// <summary>
-        /// 后处�
+        /// 后处�
         /// </summary>
-        /// <param name="context">上下�/param>
+        /// <param name="context">上下�/param>
         /// <param name="responseData">响应参数</param>
         /// <returns></returns>
         public PluginProcessResult PostProcess(IJsonRpcHttpContext context, byte[] responseData)
@@ -98,7 +98,7 @@ namespace WingCloudServer.Plugin
                 .Where(x => !string.IsNullOrEmpty(x.Name) && !string.IsNullOrEmpty(x.ServerUrl))?.ToList();
                 var fasterServerInfo = new ServerInfoDTO();
                 var parallelOption = new ParallelOptions() { MaxDegreeOfParallelism = 4 };
-                //本地IP段检�
+                //本地IP段检�
                 Parallel.ForEach(serverInformationList, parallelOption, (item, parallelLoopState) =>
                 {
                     if (item.AssignClientIPList != null && item.AssignClientIPList.Any())
@@ -122,7 +122,7 @@ namespace WingCloudServer.Plugin
                 {
                     //找到,直接返回
                     list.Add(fasterServerInfo);
-                    //添加其他服务�
+                    //添加其他服务�
                     var otherServerList = serverInformationList.FindAll(c => c.Name != fasterServerInfo.Name).Select(c => new ServerInfoDTO()
                     {
                         Name = c.Name,
@@ -132,7 +132,7 @@ namespace WingCloudServer.Plugin
                 }
                 else if (_isUsePositionService)//是否开启第三方定位服务
                 {
-                    //没找到,定位,计算,更新,返�
+                    //没找到,定位,计算,更新,返�
                     var locationInfo = GetIpLocationInfo(ipAddress);
                     if (locationInfo.ad_info != null && !string.IsNullOrEmpty(locationInfo.ad_info.nation))
                     {
@@ -148,7 +148,7 @@ namespace WingCloudServer.Plugin
                                 Host = c.ServerUrl,
                             })?.FirstOrDefault() ?? new ServerInfoDTO();
                             list.Add(fastServerInfo);
-                            //添加其他服务�
+                            //添加其他服务�
                             var otherServerList = serverInformationList.FindAll(c => c.Name != fastServerInfo.Name).Select(c => new ServerInfoDTO()
                             {
                                 Name = c.Name,
@@ -161,7 +161,7 @@ namespace WingCloudServer.Plugin
                             var extendList = new List<ServerInfoExtend>();
                             foreach (var item in serverInformationList)
                             {
-                                //计算最短距�
+                                //计算最短距�
                                 double beelineDistanceTemp = GetDistance(locationInfo.location.lat, locationInfo.location.lng, Convert.ToDouble(item.Lat), Convert.ToDouble(item.Lng));
                                 var extendInfo = new ServerInfoExtend()
                                 {
@@ -182,7 +182,7 @@ namespace WingCloudServer.Plugin
                 else
                 {
                     //啥也没找到,默认优先香港服务器[主服务器]
-                    list = serverInformationList.OrderBy(c => c.IsMaster).Select(e => new ServerInfoDTO()
+                    list = serverInformationList.OrderByDescending(c => c.IsMaster).Select(e => new ServerInfoDTO()
                     {
                         Name = e.Name,
                         Host = e.ServerUrl,
@@ -218,13 +218,13 @@ namespace WingCloudServer.Plugin
         }
 
         /// <summary>
-        /// 计算两点位置的距离,返回两点的距离,单位 �
-        /// 该公式为GOOGLE提供,误差小�.2�
+        /// 计算两点位置的距离,返回两点的距离,单位 �
+        /// 该公式为GOOGLE提供,误差小�.2�
         /// </summary>
-        /// <param name="lat1">第一点纬�/param>
-        /// <param name="lng1">第一点经�/param>
-        /// <param name="lat2">第二点纬�/param>
-        /// <param name="lng2">第二点经�/param>
+        /// <param name="lat1">第一点纬�/param>
+        /// <param name="lng1">第一点经�/param>
+        /// <param name="lat2">第二点纬�/param>
+        /// <param name="lng2">第二点经�/param>
         /// <returns></returns>
         public double GetDistance(double lat1, double lng1, double lat2, double lng2)
         {
@@ -249,7 +249,7 @@ namespace WingCloudServer.Plugin
         }
 
         /// <summary>
-        /// 获取ip的定位信��
+        /// 获取ip的定位信
         /// </summary>
         /// <param name="d"></param>
         /// <returns></returns>
@@ -272,13 +272,13 @@ namespace WingCloudServer.Plugin
             catch (Exception ex)
             {
                 //异常处理
-                Logger.WriteLineError($"GetIpLocationInfo err:{ex},{ex.StackTrace}");
+                Logger.WriteLineError($@"GetIpLocationInfo err:{ex}");
             }
             return info;
         }
 
         /// <summary>
-        /// 处理http GET请求,返回数�
+        /// 处理http GET请求,返回数�
         /// </summary>
         /// <param name="url">请求的url地址</param>
         /// <returns>http GET成功后返回的数据,失败抛WebException异常</returns>
@@ -290,20 +290,20 @@ namespace WingCloudServer.Plugin
             HttpWebRequest request = null;
             HttpWebResponse response = null;
 
-            //请求url以获取数�
+            //请求url以获取数�
             try
             {
                 //设置最大连接数
                 ServicePointManager.DefaultConnectionLimit = 40;
 
                 /***************************************************************
-                * 下面设置HttpWebRequest的相关属�
+                * 下面设置HttpWebRequest的相关属�
                 * ************************************************************/
                 request = (HttpWebRequest)WebRequest.Create(url);
 
                 request.Method = "GET";
 
-                //获取服务器返�
+                //获取服务器返�
                 response = (HttpWebResponse)request.GetResponse();
 
                 //获取HTTP返回数据
@@ -332,7 +332,7 @@ namespace WingCloudServer.Plugin
     }
 
     /// <summary>
-    /// 腾讯云定位响应实�
+    /// 腾讯云定位响应实�
     /// </summary>
     class IPServiceGuide
     {
@@ -353,7 +353,7 @@ namespace WingCloudServer.Plugin
     }
 
     /// <summary>
-    /// 腾讯云定位响应结�
+    /// 腾讯云定位响应结�
     /// </summary>
     class IPServiceResult
     {
@@ -363,7 +363,7 @@ namespace WingCloudServer.Plugin
         public string ip { get; set; }
 
         /// <summary>
-        /// 经纬度信�
+        /// 经纬度信�
         /// </summary>
         public IPServiceLocationResult location { get; set; }
 
@@ -390,7 +390,7 @@ namespace WingCloudServer.Plugin
     }
 
     /// <summary>
-    /// 腾讯云定位地区信�
+    /// 腾讯云定位地区信�
     /// </summary>
     class IPServiceNationResult
     {
@@ -426,7 +426,7 @@ namespace WingCloudServer.Plugin
     class ServerInfoExtend : ServerInfoDTO
     {
         /// <summary>
-        /// 最短距�
+        /// 最短距�
         /// </summary>
         public double BeelineDistance { get; set; }
     }

+ 2 - 1
src/Plugin/TokenVerifyPluginService.cs

@@ -64,7 +64,8 @@ namespace WingCloudServer.Plugin
             "IStorageService/UploadFileAsync",
             "IVinnoServerService/UpdateServerInfoAsync",
             "IVinnoServerService/GetServerInfoListAsync",
-            "IVinnoServerService/EchoAsync"
+            "IVinnoServerService/EchoAsync",
+            "IVinnoServerService/UpdateServerIPListAsync"
         };
 
         public PluginProcessResult PreProcess(IJsonRpcHttpContext context, byte[] requestData)