httppize
Version:
Access as http any https resource. Let it be https with self sign certificate or https with client certificate or regular https
57 lines (42 loc) • 1.41 kB
JavaScript
// multiple hosts
// upload cert by querystring with base64
// post/get
// http.get > http.request method req.method
if ( process.argv.length != 5 ) {
console.log('Usage: httppize localport desthost [path/to/client-certificate.pem]');
console.log(' eg: httppize 8080 www.some.domain.com cert.pem');
console.log(process.argv.length);
return;
}
var port = process.argv[2];
var desthost = process.argv[3];
var cert = process.argv[4];
var fs = require('fs');
var http = require('http');
var https = require('https');
var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({xfwd: false});
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var get = function(host, path, cert, callback) {
https.get({
host: host
, path: path
, key: cert
, cert: cert
}, function(res) {
let rawData = '';
res.on('data', (chunk) => { rawData += chunk; });
res.on('end', () => { callback(res.statusCode, res.headers, rawData); });
}).on('error', (err) => {
callback(500, {}, `Got error: ${err.message}`)
});
}
http.createServer(function(req, res) {
console.log(`Received request ${req.headers.host}${req.url}`);
get(desthost, req.url, fs.readFileSync(cert), function(statusCode, headers, body) {
res.writeHead(statusCode, headers);
res.write(body);
res.end();
});
}).listen(port);