add _request_ event to print basic request information

This commit is contained in:
Roman Shtylman
2018-04-03 22:16:32 -07:00
parent db22a4efe0
commit 2372ec22cc
4 changed files with 22 additions and 17 deletions

View File

@@ -74,6 +74,7 @@ The `tunnel` instance returned to your callback emits the following events
|event|args|description| |event|args|description|
|----|----|----| |----|----|----|
|request|info|fires when a request is processed by the tunnel, contains _method_ and _path_ fields|
|error|err|fires when an error happens on the tunnel| |error|err|fires when an error happens on the tunnel|
|close||fires when the tunnel has closed| |close||fires when the tunnel has closed|

View File

@@ -26,12 +26,11 @@ var argv = require('yargs')
alias: 'port', alias: 'port',
describe: 'Internal http server port', describe: 'Internal http server port',
}) })
.option('d', { .option('print-requests', {
alias: 'debug-logs', describe: 'Print basic request info',
describe: 'Print Request Headers',
}) })
.require('port') .require('port')
.boolean('debug-logs') .boolean('print-requests')
.help('help', 'Show this help and exit') .help('help', 'Show this help and exit')
.version(require('../package').version) .version(require('../package').version)
.argv; .argv;
@@ -47,9 +46,10 @@ var opt = {
port: argv.port, port: argv.port,
local_host: argv['local-host'], local_host: argv['local-host'],
subdomain: argv.subdomain, subdomain: argv.subdomain,
debug_logs: argv['debug-logs'],
}; };
const PrintRequests = argv['print-requests'];
lt_client(opt.port, opt, function(err, tunnel) { lt_client(opt.port, opt, function(err, tunnel) {
if (err) { if (err) {
throw err; throw err;
@@ -64,6 +64,12 @@ lt_client(opt.port, opt, function(err, tunnel) {
tunnel.on('error', function(err) { tunnel.on('error', function(err) {
throw err; throw err;
}); });
if (PrintRequests) {
tunnel.on('request', function(info) {
console.log(new Date().toString(), info.method, info.path);
});
}
}); });
// vim: ft=javascript // vim: ft=javascript

View File

@@ -77,7 +77,6 @@ Tunnel.prototype._establish = function(info) {
info.local_host = opt.local_host; info.local_host = opt.local_host;
info.local_port = opt.port; info.local_port = opt.port;
info.debug_logs = opt.debug_logs;
var tunnels = self.tunnel_cluster = TunnelCluster(info); var tunnels = self.tunnel_cluster = TunnelCluster(info);
@@ -124,6 +123,10 @@ Tunnel.prototype._establish = function(info) {
tunnels.open(); tunnels.open();
}); });
tunnels.on('request', function(info) {
self.emit('request', info);
});
// establish as many tunnels as allowed // establish as many tunnels as allowed
for (var count = 0 ; count < info.max_conn ; ++count) { for (var count = 0 ; count < info.max_conn ; ++count) {
tunnels.open(); tunnels.open();

View File

@@ -30,8 +30,6 @@ TunnelCluster.prototype.open = function() {
var local_host = opt.local_host || 'localhost'; var local_host = opt.local_host || 'localhost';
var local_port = opt.local_port; var local_port = opt.local_port;
var debug_logs = opt.debug_logs;
debug('establishing tunnel %s:%s <> %s:%s', local_host, local_port, remote_host, remote_port); debug('establishing tunnel %s:%s <> %s:%s', local_host, local_port, remote_host, remote_port);
// connection to localtunnel server // connection to localtunnel server
@@ -116,15 +114,12 @@ TunnelCluster.prototype.open = function() {
} }
remote.on('data', function(data) { remote.on('data', function(data) {
if (debug_logs) { const match = data.toString().match(/^(\w+) (\S+)/);
var match = data.toString().match(/^(\w+) (\S+)/); if (match) {
if (match) { self.emit('request', {
console.log( method: match[1],
new Date().toString(), path: match[2],
`method=${match[1]}`, });
`path=${match[2]}`
);
}
} }
}); });