can-bind-to-host
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -12,13 +12,16 @@ "use strict"; | ||
return new Promise(function (res) { | ||
server = net_1.default | ||
.createServer() | ||
.listen({ | ||
host: host, | ||
port: 0, | ||
}) | ||
.addListener('error', function () { return res(false); }) | ||
.addListener('listening', function () { | ||
server === null || server === void 0 ? void 0 : server.close(); | ||
res(true); | ||
}); | ||
if (port >= 0 && port <= 65535) | ||
server = net_1.default | ||
.createServer() | ||
.listen({ | ||
host: host, | ||
port: 0, | ||
}) | ||
.addListener('error', function () { return res(false); }) | ||
.addListener('listening', function () { | ||
server === null || server === void 0 ? void 0 : server.close(); | ||
res(true); | ||
}); | ||
else | ||
res(false); | ||
}); | ||
@@ -25,0 +28,0 @@ }; |
{ | ||
"name": "can-bind-to-host", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Utility package to see if the node process can bind to the host or listen on a port. Can be used for checking if a host resolves to localhost.", | ||
@@ -9,3 +9,7 @@ "main": "dist/index.js", | ||
], | ||
"bin": { | ||
"can-bind-to-host": "./dist/bin/can-bind-to-host.js" | ||
}, | ||
"scripts": { | ||
"prepublishOnly": "npm run build", | ||
"test": "jest", | ||
@@ -12,0 +16,0 @@ "build": "tsc", |
@@ -7,8 +7,49 @@ # can-bind-to-host | ||
# Localhost False Positives | ||
> **Note:** In the context of this README, `localhost` is used as a familiar term for _the IPs (or hostnames that resolve to them) which are associated with the network interface(s) of the local system_. This includes `localhost`, `127.0.0.1`, `0.0.0.0`, `::1`, and even public domains that happen to resolve to an IP which points to your own system. | ||
## Implementation | ||
The implementation of `can-bind-to-host` is very short (it's less than 25 lines!). It functions by attempting to create a TCP server on the specified host (and optionally port). The underlying standard `net` module handles DNS resolution as needed. | ||
## Usage | ||
### API | ||
[Example](/src/bin/can-bind-to-host.ts) | ||
### CLI | ||
You can try out the package via `npx` in CLI: | ||
Usage: | ||
``` | ||
npx can-bind-to-host [hostname] [port] | ||
``` | ||
Examples: | ||
```bash | ||
$ npx can-bind-to-host | ||
0.0.0.0:0 is bindable | ||
$ npx can-bind-to-host localhost 8080 | ||
localhost:8080 is bindable | ||
$ npx can-bind-to-host localhost | ||
localhost:0 is bindable | ||
``` | ||
## Can I use `can-bind-to-host` to check if a host is localhost? | ||
### Short Answer: | ||
**Yes!** | ||
### Long Answer: | ||
In general, `can-bind-to-host` can reliably detect whether a given host points to localhost. | ||
Unlike `is-localhost-ip` which uses regular expressions to determine if an IP is local and can mislead by unusual network configurations, this package can definitively rule out any host which is not local. | ||
# Localhost False Negatives | ||
For similar reasons as above, this package can return false negatives in case of using this package under an extremely restricted user. As long as the process uses this package can bind to a local port, it will be accurate. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
55
6000
53