holepunch.js/README.md

119 lines
2.4 KiB
Markdown
Raw Normal View History

2015-02-08 05:03:39 +00:00
# holepunch
2015-12-29 19:21:11 +00:00
2015-12-30 21:40:52 +00:00
A node.js library (api) and command (cli) for using UPnP SSDP
2015-12-29 19:21:11 +00:00
and ZeroConf (Bonjour) NAT-PMP
to make home and office devices and services Internet-accessible.
## Progress
2015-12-30 21:40:52 +00:00
it now works :-)
still in development
2015-12-29 19:21:11 +00:00
2015-12-30 08:22:04 +00:00
```bash
2015-12-30 21:40:52 +00:00
git clone git@github.com:Daplie/holepunch.git
pushd holepunch
2015-12-30 08:22:04 +00:00
node bin/holepunch.js --debug
```
2015-12-30 21:40:52 +00:00
## Install
**Commandline Tool**
```bash
npm install --global holepunch
```
**node.js Library**
```
npm install --save holepunch
```
2015-12-30 23:13:06 +00:00
## Examples
### Commandline (CLI)
2015-12-30 21:40:52 +00:00
```bash
holepunch --help
```
```
holepunch --plain-ports 80,65080 --tls-ports 443,65443
```
2015-12-30 23:13:06 +00:00
### API
```javascript
var punch = require('holepunch');
punch({
debug: true
, plainPorts: [{ internal: 80, external: 80 }]
, tlsPorts: [{ internal: 443, external: 443 }]
, ipifyUrls: ['api.ipify.org'],
, protocols: ['none', 'upnp', 'pmp']
, rvpnConfigs: []
}).then(function () {
});
```
## API
```javascript
punch(opts)
debug // print extra debug info
tcpPorts // these ports will be tested via tcp / http
tlsPorts // these ports will be tested via tls / https
udpPorts // not implemented, not tested
loopback // test ports via http / https
```
## Commandline
2015-12-30 21:40:52 +00:00
TODO `--prebound-ports 22`
```
Usage:
holepunch.js [OPTIONS] [ARGS]
Options:
--debug BOOLEAN show traces and logs
--plain-ports STRING Port numbers to test with plaintext loopback.
(default: 65080)
(formats: <port>,<internal:external>)
--tls-ports STRING Port numbers to test with tls loopback.
(default: null)
--ipify-urls STRING Comma separated list of URLs to test for external ip.
(default: api.ipify.org)
--protocols STRING Comma separated list of ip mapping protocols.
(default: none,upnp,pmp)
--rvpn-configs STRING Comma separated list of Reverse VPN config files in
the order they should be tried. (default: null)
-h, --help Display help and usage details
```
2015-12-30 22:35:17 +00:00
## Non-Root
You **do not need root** to map ports, but you may need root to test them.
If you're cool with allowing all node programs to bind to privileged ports, try this:
```bash
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/node
```
2015-12-29 19:21:11 +00:00
# License
MPL-2.0