Skip to content

Instantly share code, notes, and snippets.

@alanhoff
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alanhoff/e72a7c7362b2bd13dc47 to your computer and use it in GitHub Desktop.
Save alanhoff/e72a7c7362b2bd13dc47 to your computer and use it in GitHub Desktop.
Proxy transparente para debug
var https = require('https');
var old = 'https://app.astandes.com.br:8443';
var url = require('url');
var util = require('util');
var fs = require('fs');
var log = function(data, inout){
inout = inout ? inout + ' ' : '';
data = inout + data.trim().replace(/\n/g, inout);
if(data)
console.log(data);
};
var options = {
key: fs.readFileSync('/etc/ssl/private/ssl-cert-snakeoil.key'),
cert: fs.readFileSync('/etc/ssl/certs/ssl-cert-snakeoil.pem')
};
https.Server(options, function(req, res) {
var payloadToServer = [];
var payloadToDevice = [];
var headersToServer = req.headers;
var headersToDevice = {};
log(util.format('%s %s', req.method, req.url));
Object.keys(req.headers).forEach(function(header){
log(util.format('%s: %s', header, req.headers[header]), '>>');
});
req.on('data', function(buff){
payloadToServer.push(buff);
});
req.on('end', function(){
if(payloadToServer.length)
log(Buffer.concat(payloadToServer).toString(), '>>');
var request = url.parse(old + req.url);
request.headers = headersToServer;
request.method = req.method;
request.rejectUnauthorized = false;
var proxy = https.request(request, function(server){
headersToDevice = server.headers;
Object.keys(server.headers).forEach(function(header){
log(util.format('%s: %s', header, server.headers[header]), '<<');
});
server.on('data', function(buff){
payloadToDevice.push(buff);
});
server.on('end', function(){
if(payloadToDevice.length)
log(Buffer.concat(payloadToDevice).toString(), '<<');
res.writeHead(server.statusCode, server.headers);
if(payloadToDevice.length)
res.write(Buffer.concat(payloadToDevice));
res.end();
});
});
if(payloadToServer.length)
proxy.write(Buffer.concat(payloadToServer));
proxy.end();
});
}).listen(8442);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment