UNPKG

bunnel

Version:
34 lines (32 loc) 1.25 kB
#!/usr/bin/env node import { Command } from 'commander'; import { TunnelClient } from '../client/index.js'; import 'pino'; import 'ws'; const program = new Command(); program.name("bunnel").description("Bunnel client").requiredOption("-l, --local <url>", "local server URL, for example http://localhost:3000").requiredOption("-t, --tunnel <url>", "tunnel server URL, for example, ws://myserver.com:4444").action(async (options) => { const localServerUrl = options.local; const tunnel = new TunnelClient({ localServerUrl, tunnelServerUrl: options.tunnel, onClosed: () => { console.log("\u{1F50C} Tunnel closed"); process.exit(0); } }); console.log(`\u{1F4E1} Connecting to tunnel server at ${options.tunnel}...`); console.log(`\u{1F504} Will forward requests to ${options.local}`); try { const { subdomain, tunnelUrl } = await tunnel.connect(); console.log(`Tunnel to ${localServerUrl} available on remote:`); console.log(`\u{1F310} Tunnel URL: ${tunnelUrl}`); process.on("SIGINT", () => { console.log("\n\u{1F6D1} Shutting down tunnel..."); tunnel.disconnect(); }); } catch (error) { console.error("\u274C Tunnel error:", error); process.exit(1); } }); program.parse();