UNPKG

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
#! /usr/bin/env node // 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);