|
|
@@ -105,6 +105,43 @@ namespace DotNetCore.CAP.Infrastructure |
|
|
|
return AddJsonProperty(json, "ExceptionMessage", jObject); |
|
|
|
} |
|
|
|
|
|
|
|
public static bool IsInnerIP(string ipAddress) |
|
|
|
{ |
|
|
|
bool isInnerIp; |
|
|
|
var ipNum = GetIpNum(ipAddress); |
|
|
|
|
|
|
|
//Private IP: |
|
|
|
//category A: 10.0.0.0-10.255.255.255 |
|
|
|
//category B: 172.16.0.0-172.31.255.255 |
|
|
|
//category C: 192.168.0.0-192.168.255.255 |
|
|
|
|
|
|
|
var aBegin = GetIpNum("10.0.0.0"); |
|
|
|
var aEnd = GetIpNum("10.255.255.255"); |
|
|
|
var bBegin = GetIpNum("172.16.0.0"); |
|
|
|
var bEnd = GetIpNum("172.31.255.255"); |
|
|
|
var cBegin = GetIpNum("192.168.0.0"); |
|
|
|
var cEnd = GetIpNum("192.168.255.255"); |
|
|
|
isInnerIp = IsInner(ipNum, aBegin, aEnd) || IsInner(ipNum, bBegin, bEnd) || IsInner(ipNum, cBegin, cEnd); |
|
|
|
return isInnerIp; |
|
|
|
} |
|
|
|
|
|
|
|
private static long GetIpNum(string ipAddress) |
|
|
|
{ |
|
|
|
var ip = ipAddress.Split('.'); |
|
|
|
long a = int.Parse(ip[0]); |
|
|
|
long b = int.Parse(ip[1]); |
|
|
|
long c = int.Parse(ip[2]); |
|
|
|
long d = int.Parse(ip[3]); |
|
|
|
|
|
|
|
var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; |
|
|
|
return ipNum; |
|
|
|
} |
|
|
|
|
|
|
|
private static bool IsInner(long userIp, long begin, long end) |
|
|
|
{ |
|
|
|
return userIp >= begin && userIp <= end; |
|
|
|
} |
|
|
|
|
|
|
|
private static bool CanConvertFromString(Type destinationType) |
|
|
|
{ |
|
|
|
destinationType = Nullable.GetUnderlyingType(destinationType) ?? destinationType; |
|
|
|