UNPKG

hyproxy

Version:

Proxy TCP connections over hypercore-protocol

57 lines (47 loc) 1.66 kB
#!/usr/bin/env node const minimist = require('minimist') const HyperProxy = require('.') const USAGE = `USAGE: hyproxy [options] <listen|connect> Options in listen mode: -p, --port Port to proxy to (required) -h, --host Hostname to proxy to (default: localhost) -s, --storage Storage directory to persist keys across restarts (optional) Options in connect mode: -k, --key Key to connect to (required) -p, --port Port for local proxy server (default: 9999) -h, --host Hostname for local proxy server (default: localhost) ` const argv = minimist(process.argv.slice(2), { alias: { p: 'port', h: 'host', k: 'key', s: 'storage' } }) const mode = argv._[0] if (!mode) onerror() main(mode, argv).catch(onerror) async function main (mode, opts) { const proxies = new HyperProxy({ storage: opts.storage }) if (mode === 'connect') { const proxy = await proxies.outbound(opts.key, opts.port, opts.host) console.log(`Connected to hyproxy://${proxy.key.toString('hex')}.`) console.log(`Local proxy listening on ${proxy.host}:${proxy.port}`) } else if (mode === 'listen') { const proxy = await proxies.inbound(opts.key, opts.port, opts.host) console.log(`Inbound proxy to ${proxy.host}:${proxy.port} listening.`) console.log(`Access link: hyproxy://${proxy.key.toString('hex')}`) } else { throw new Error(`Invalid mode: ${mode}`) } // wait forever or until an error occurs await new Promise((resolve, reject) => { proxies.once('error', reject) }) } function onerror (err) { if (err) console.error('[error] ' + err.message) else console.error(USAGE) process.exit(1) }