mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 14:18:32 +00:00 
			
		
		
		
	
		
			
	
	
		
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #!/usr/bin/env node | ||
|  | var lt_client = require('../client'); | ||
|  | var open_url = require('openurl'); | ||
|  | 
 | ||
|  | var argv = require('yargs') | ||
|  |     .usage('Usage: $0 --port [num] <options>') | ||
|  |     .env(true) | ||
|  |     .option('h', { | ||
|  |         alias: 'host', | ||
|  |         describe: 'Upstream server providing forwarding', | ||
|  |         default: 'https://localtunnel.me', | ||
|  |     }) | ||
|  |     .option('s', { | ||
|  |         alias: 'subdomain', | ||
|  |         describe: 'Request this subdomain' | ||
|  |     }) | ||
|  |     .option('l', { | ||
|  |         alias: 'local-host', | ||
|  |         describe: 'Tunnel traffic to this host instead of localhost, override Host header to this host' | ||
|  |     }) | ||
|  |     .options('o', { | ||
|  |         alias: 'open', | ||
|  |         describe: 'opens url in your browser' | ||
|  |     }) | ||
|  |     .option('p', { | ||
|  |         alias: 'port', | ||
|  |         describe: 'Internal http server port', | ||
|  |     }) | ||
|  |     .option('print-requests', { | ||
|  |         describe: 'Print basic request info', | ||
|  |     }) | ||
|  |     .require('port') | ||
|  |     .boolean('print-requests') | ||
|  |     .help('help', 'Show this help and exit') | ||
|  |     .version(require('../package').version) | ||
|  |     .argv; | ||
|  | 
 | ||
|  | if (typeof argv.port !== 'number') { | ||
|  |     require('yargs').showHelp(); | ||
|  |     console.error('port must be a number'); | ||
|  |     process.exit(1); | ||
|  | } | ||
|  | 
 | ||
|  | var opt = { | ||
|  |     host: argv.host, | ||
|  |     port: argv.port, | ||
|  |     local_host: argv['local-host'], | ||
|  |     subdomain: argv.subdomain, | ||
|  | }; | ||
|  | 
 | ||
|  | const PrintRequests = argv['print-requests']; | ||
|  | 
 | ||
|  | lt_client(opt.port, opt, function(err, tunnel) { | ||
|  |     if (err) { | ||
|  |         throw err; | ||
|  |     } | ||
|  | 
 | ||
|  |     console.log('your url is: %s', tunnel.url); | ||
|  | 
 | ||
|  |     if (argv.open) { | ||
|  |         open_url.open(tunnel.url); | ||
|  |     } | ||
|  | 
 | ||
|  |     tunnel.on('error', function(err) { | ||
|  |         throw err; | ||
|  |     }); | ||
|  | 
 | ||
|  |     if (PrintRequests) { | ||
|  |         tunnel.on('request', function(info) { | ||
|  |             console.log(new Date().toString(), info.method, info.path); | ||
|  |         }); | ||
|  |     } | ||
|  | }); | ||
|  | 
 | ||
|  | // vim: ft=javascript |