Commit d420ae23 authored by Savorboard's avatar Savorboard

add LAN ip to LocalRequestsOnlyAuthorizationFilter

parent 0e357e70
namespace DotNetCore.CAP.Dashboard using DotNetCore.CAP.Infrastructure;
namespace DotNetCore.CAP.Dashboard
{ {
public class LocalRequestsOnlyAuthorizationFilter : IDashboardAuthorizationFilter public class LocalRequestsOnlyAuthorizationFilter : IDashboardAuthorizationFilter
{ {
...@@ -16,6 +18,10 @@ ...@@ -16,6 +18,10 @@
if (context.Request.RemoteIpAddress == context.Request.LocalIpAddress) if (context.Request.RemoteIpAddress == context.Request.LocalIpAddress)
return true; return true;
// check if private ip
if (Helper.IsInnerIP(context.Request.RemoteIpAddress))
return true;
return false; return false;
} }
} }
......
...@@ -105,6 +105,43 @@ namespace DotNetCore.CAP.Infrastructure ...@@ -105,6 +105,43 @@ namespace DotNetCore.CAP.Infrastructure
return AddJsonProperty(json, "ExceptionMessage", jObject); 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) private static bool CanConvertFromString(Type destinationType)
{ {
destinationType = Nullable.GetUnderlyingType(destinationType) ?? destinationType; destinationType = Nullable.GetUnderlyingType(destinationType) ?? destinationType;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment