Browse Source

add LAN ip to LocalRequestsOnlyAuthorizationFilter

master
Savorboard 7 years ago
parent
commit
d420ae23a4
2 changed files with 44 additions and 1 deletions
  1. +7
    -1
      src/DotNetCore.CAP/Dashboard/LocalRequestsOnlyAuthorizationFilter.cs
  2. +37
    -0
      src/DotNetCore.CAP/Infrastructure/Helper.cs

+ 7
- 1
src/DotNetCore.CAP/Dashboard/LocalRequestsOnlyAuthorizationFilter.cs View File

@@ -1,4 +1,6 @@
namespace DotNetCore.CAP.Dashboard
using DotNetCore.CAP.Infrastructure;

namespace DotNetCore.CAP.Dashboard
{
public class LocalRequestsOnlyAuthorizationFilter : IDashboardAuthorizationFilter
{
@@ -16,6 +18,10 @@
if (context.Request.RemoteIpAddress == context.Request.LocalIpAddress)
return true;

// check if private ip
if (Helper.IsInnerIP(context.Request.RemoteIpAddress))
return true;

return false;
}
}

+ 37
- 0
src/DotNetCore.CAP/Infrastructure/Helper.cs View File

@@ -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;


Loading…
Cancel
Save