Skip to content

Commit

Permalink
add verbose logging flag, improve output
Browse files Browse the repository at this point in the history
  • Loading branch information
igrigorik committed Jun 22, 2012
1 parent ee5948b commit 172db67
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 9 deletions.
16 changes: 13 additions & 3 deletions bin/spdyproxy
Expand Up @@ -3,10 +3,11 @@
var path = require('path') var path = require('path')
, pkg = require('../package.json') , pkg = require('../package.json')
, version = pkg.version , version = pkg.version
, colors = require('colors')
, spdyProxy = require('../lib/server') , spdyProxy = require('../lib/server')
, fs = require('fs') , fs = require('fs')
, opts = require('optimist') , opts = require('optimist')
.usage('Usage: $0 -x - y') .usage('Usage: $0')
.options({ .options({
key: { key: {
demand: true, demand: true,
Expand Down Expand Up @@ -38,6 +39,12 @@ var path = require('path')
demand: false, demand: false,
alias: 'P', alias: 'P',
description: 'basic auth password' description: 'basic auth password'
},
verbose: {
demand: false,
alias: 'v',
description: 'enable verbose logging',
default: false
} }
}).argv; }).argv;


Expand All @@ -46,10 +53,13 @@ opts.cert = fs.readFileSync(path.resolve(opts.cert));
opts.ca = fs.readFileSync(path.resolve(opts.ca)); opts.ca = fs.readFileSync(path.resolve(opts.ca));


process.on('uncaughtException', function(e) { process.on('uncaughtException', function(e) {
console.error('Error: ' + e); console.error('Error: '.red + e);
}); });


var proxy = new spdyProxy.createServer(opts); var proxy = new spdyProxy.createServer(opts);
proxy.listen(opts.port); proxy.listen(opts.port);


console.log("started server"); console.log(
"Started SPDY proxy, port: ".green + opts.port
+ (" (v. %s)").grey, version
);
17 changes: 12 additions & 5 deletions lib/server.js
Expand Up @@ -7,9 +7,10 @@ var spdy = require('spdy'),


var SPDYProxy = function(options) { var SPDYProxy = function(options) {
function logRequest(req) { function logRequest(req) {
console.log(req.method + ' ' + req.url); console.log(req.method.green + ' ' + req.url.yellow);
for (var i in req.headers) for (var i in req.headers)
console.log(' * ' + i + ': ' + req.headers[i]); console.log(' > '.grey + i.cyan + ': ' + req.headers[i]);
console.log();
} }


function synReply(socket, code, reason, headers, cb) { function synReply(socket, code, reason, headers, cb) {
Expand Down Expand Up @@ -66,15 +67,22 @@ var SPDYProxy = function(options) {
tunnel.setNoDelay(true); tunnel.setNoDelay(true);


tunnel.on('error', function(e) { tunnel.on('error', function(e) {
console.log("Tunnel error: " + e); console.log("Tunnel error: ".red + e);
synReply(socket, 502, "Tunnel Error", {}, function() { synReply(socket, 502, "Tunnel Error", {}, function() {
socket.end(); socket.end();
}); });
}); });
} }


function handleRequest(req, res) { function handleRequest(req, res) {
logRequest(req); if (options.verbose) logRequest(req);

var socket = (req.method == 'CONNECT') ? res : res.socket;
console.log("%s:%s".yellow + " - %s - " + "stream ID: " + "%s".yellow,
socket.connection.socket.remoteAddress,
socket.connection.socket.remotePort,
req.method, res.streamID || socket.streamID
);


if (options.user) { if (options.user) {
// perform basic proxy auth (over established SSL tunnel) // perform basic proxy auth (over established SSL tunnel)
Expand All @@ -90,7 +98,6 @@ var SPDYProxy = function(options) {
delete req.headers['proxy-authorization']; delete req.headers['proxy-authorization'];


if((username != options.user) || (password != options.pass)) { if((username != options.user) || (password != options.pass)) {
var socket = (req.method == 'CONNECT') ? res : res.socket;
synReply(socket, 407, 'Proxy Authentication Required', synReply(socket, 407, 'Proxy Authentication Required',
{'Proxy-Authenticate': 'Basic realm="SPDY Proxy"'}, {'Proxy-Authenticate': 'Basic realm="SPDY Proxy"'},
function() { function() {
Expand Down
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -13,7 +13,8 @@


"dependencies": { "dependencies": {
"spdy": "1.2.1", "spdy": "1.2.1",
"optimist": "*" "optimist": "*",
"colors": "*"
}, },


"main": "./lib/server.js", "main": "./lib/server.js",
Expand Down

0 comments on commit 172db67

Please sign in to comment.