mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-11-03 23:29:03 +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
							 |