|
@@ -2,6 +2,7 @@
|
|
|
using OASystem.Domain.Attributes;
|
|
|
using OASystem.Domain.Entities.Customer;
|
|
|
using Org.BouncyCastle.Asn1.Pkcs;
|
|
|
+using System.Net;
|
|
|
using UAParser;
|
|
|
using static OASystem.API.OAMethodLib.JWTHelper;
|
|
|
|
|
@@ -163,7 +164,7 @@ namespace OASystem.API.Middlewares
|
|
|
remoteIp = context.Connection.RemoteIpAddress?.ToString();
|
|
|
}
|
|
|
|
|
|
- //(remoteIp, location) = await GetIpInfo();
|
|
|
+ (remoteIp, location) = await GetIpInfo(remoteIp);
|
|
|
//remoteIp = await GetExternalIp();
|
|
|
//location = await GetIpLocation(remoteIp);
|
|
|
|
|
@@ -303,19 +304,27 @@ namespace OASystem.API.Middlewares
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
- private async Task<(string ip, string local)> GetIpInfo()
|
|
|
+ /// <summary>
|
|
|
+ /// 获取IP信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="ip">ipv4 or ipv6</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private async Task<(string ip, string local)> GetIpInfo(string ip)
|
|
|
{
|
|
|
- string ip = string.Empty, local = string.Empty;
|
|
|
- var response = await _httpClient.GetAsync("https://api.vore.top/api/IPdata");
|
|
|
+ string local = string.Empty;
|
|
|
|
|
|
- response.EnsureSuccessStatusCode();
|
|
|
- var json = await response.Content.ReadAsStringAsync();
|
|
|
- var ipInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
|
|
|
- if (ipInfo.code == 200)
|
|
|
+ if (IPAddress.TryParse(ip,out _))
|
|
|
{
|
|
|
- ip = ipInfo.ipinfo.text;
|
|
|
- local = $"{ipInfo.adcode.o}";
|
|
|
+ var response = await _httpClient.GetAsync($"https://api.vore.top/api/IPdata?ip={ip}");
|
|
|
+
|
|
|
+ response.EnsureSuccessStatusCode();
|
|
|
+ var json = await response.Content.ReadAsStringAsync();
|
|
|
+ var ipInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
|
|
|
+ if (ipInfo.code == 200)
|
|
|
+ {
|
|
|
+ ip = ipInfo.ipinfo.text;
|
|
|
+ local = $"{ipInfo.adcode.o}";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return (ip, local);
|