private async static Task<bool> IsLocalHost(string hostname)
{
IPAddress[] hostAddresses = await Dns.GetHostAddressesAsync(hostname);
IPAddress[] localHostAddresses = await Dns.GetHostAddressesAsync(Dns.GetHostName());
// Note: This returns 127.0.0.1 and ::1 but 127.0.0.0/8 which most systems consider localhost.
IPAddress[] loopbackAddresses = await Dns.GetHostAddressesAsync("localhost");
int isLocalHost = hostAddresses.Intersect(localHostAddresses).Count();
int isLoopback = hostAddresses.Intersect(loopbackAddresses).Count();
return isLocalHost + isLoopback > 0;
}
}