private static bool IsValidExternalIp(string ip)
{
if (ip.IsNullOrEmpty())
return false;
IPAddress address = IPAddress.None;
if (IPAddress.TryParse(ip, out address) == false)
return false;
List<IPAddressRange> localIPRanges = new List<IPAddressRange> {
new IPAddressRange(IPAddress.Parse("10.0.0.0"), IPAddress.Parse("10.255.255.255")),
new IPAddressRange(IPAddress.Parse("172.16.0.0"), IPAddress.Parse("172.31.255.255")),
new IPAddressRange(IPAddress.Parse("192.168.0.0"), IPAddress.Parse("192.168.255.255")),
new IPAddressRange(IPAddress.Parse("169.254.0.0"), IPAddress.Parse("169.254.255.255"))
};
foreach (var range in localIPRanges)
{
if (range.IsInRange(address))
return false;
}
return true;
}
}