UNPKG

tunnelmole

Version:

Tunnelmole, an open source ngrok alternative. Instant public URLs for any http/https based application. Available as a command line application or as an NPM dependency for your code. Stable and maintained. Good test coverage. Works behind firewalls

49 lines 1.94 kB
import tunnelmole from "../tunnelmole.js"; import isNumber from 'is-number'; import { setApiKey } from "../identity/api-key-service.js"; import { unreserveDomain } from "../domains/unreseve-domain.js"; /** * Build Options from the command line input, then pass them off to tunnelmole() */ export default async function dispatchCommand(arg0, command) { const options = {}; // If the first argument is a number, launch Tunnelmole and expose the port if (isNumber(arg0)) { options.port = parseInt(arg0); } if (typeof command.args[1] === 'string' && command.args[1].toLowerCase() === 'as' && typeof command.args[2] === 'string') { options.domain = command.args[2]; } else if (typeof command.args[1] === 'string' && command.args[1] === "AS" && typeof command.args[2] !== 'string') { console.info("Please enter the domain you want to expose e.g. foo.tunnelmole.net"); } // Check for a route handler for any options passed const routeOption = resolveRoute(command); if (typeof routeOption === 'string') { const handler = routes[routeOption]; // Call the handler, command[routeOption] is the value of the command line option then exit await handler(command[routeOption]); return Promise.resolve(); } if (options.port) { // We have enough to Launch Tunnelmole tunnelmole(options, true); return; } // No actions to dispatch based on arguments. Show help. command.help(); } // See if any command line options match a route to handle them. Return the name of the handler for the first match const resolveRoute = (command) => { for (const option in command) { if (routes[option] !== undefined) { return option; } } return undefined; }; const routes = { "setApiKey": setApiKey, "unreserveSubdomain": unreserveDomain }; //# sourceMappingURL=dispatch-command.js.map