is-localhost-ip
Comprehensive and robust library to checks whether given host name or IPv4/IPv6 address belongs to the local machine
Main difference from other libraries here is comprehensiveness: we start from strict RegExp checks (for IP address first, and then for correctness to be a host name), then fallback to DNS resolver (so it works with something like john.dev
remapped locally in hosts
or with local resolver).
All this in just ~100 lines of code without external dependencies.
Installation
npm i is-localhost-ip
yarn add is-localhost-ip
Example
const isLocalhost = require('is-localhost-ip');
(async () => {
await isLocalhost('127.0.0.1');
await isLocalhost('::ffff:127.0.0.1');
await isLocalhost('192.168.0.12');
await isLocalhost('192.168.0.12', true);
await isLocalhost('184.55.123.2');
await isLocalhost('tino.local');
await isLocalhost('localhost');
await isLocalhost('microsoft.com');
})();
Caveats
Doesn't work with internationalized (RFC 3492 or RFC 5891) domain names. If you need that please use wonderful Punycode.js to convert the string before passing to this library:
const isLocalhost = require('is-localhost-ip');
const punycode = require('punycode');
(async () => {
await isLocalhost(punycode.toASCII('свобода.рф'));
await isLocalhost(punycode.toASCII('私の.家'));
})();
License
is-localhost-ip
is available under the MIT license.