node-http-proxy/index.js

52 lines
1.3 KiB
JavaScript
Raw Normal View History

2019-01-25 00:54:48 +00:00
var net = require('net');
2019-01-25 03:07:42 +00:00
var http = require('http');
var fs = require('fs');
var winston = require("winston");
2019-01-26 15:19:25 +00:00
var rp = require("request-promise");
// Rudimentary logger.
// TODO - Make this filename configurable.
const logger = winston.createLogger({
transports: [
new winston.transports.File({filename: 'proxy.log'})
]
});
2019-01-25 03:07:42 +00:00
2019-01-25 00:54:48 +00:00
function startServer() {
// Start the server, set up data and end handlers.
var server = http.createServer();
server.on('request', (request, response) => {
let body = [];
// Use closure for request.
let req = request;
let res = response;
request.on("data", (chunk) => {
body.push(chunk);
}).on("end", () => {
body = Buffer.concat(body).toString();
2019-01-26 16:18:31 +00:00
console.log(req.path);
logger.info({message: "Got a message!"});
logger.info({message: req});
2019-01-26 16:18:31 +00:00
let connector = http.request(
req.headers["Host"], {
headers: req.headers,
}, (resp) => {
resp.pipe(res);
});
req.pipe(connector);
})
})
// Start the server
server.listen(8124, () => {
console.log("Server bound.");
});
2019-01-25 01:43:49 +00:00
return server;
}
2019-01-25 03:13:48 +00:00
startServer();