relay.js 2013
Most likely a man in the middle logger for trouble shooting machine that M2C (KE2 to Ver Cloud) interface
var http = require("http"); var https = require("https"); var url = require("url"); var serverStartedDateTimeFormatted = formatDate(new Date()); function start() { writeLogWithTimeStamp("Starting"); // Original request handler function onRequest(request, response) { request.url_parts = url.parse(request.url, true); writeLogWithTimeStamp(request.url); writeLogWithTimeStamp(request.url_parts.query.xml); // Define request to be relayed, use original path // Note: No body in original var options = { hostname: xxxxx.verisae.com', port: xxx, path: request.url, method: 'POST' }; // create the relayed request var relay_request = https.request(options); // define handlers for response to relayed request relay_request.addListener('response', function (relay_response) { writeLogWithTimeStamp(relay_response.statusCode); relay_response.addListener('data', function(chunk) { // writeLogWithTimeStamp(chunk); response.write(chunk, 'binary'); process.stdout.write(chunk); }); relay_response.addListener('end', function() { response.end(); }); response.writeHead(relay_response.statusCode, relay_response.headers); }); request.addListener('data', function(chunk) { relay_request.write(chunk, 'binary'); }); request.addListener('end', function() { relay_request.end(); }); } var server = http.createServer(onRequest).listen(process.env.PORT, process.env.IP); writeLogServerUpSince(); setInterval(function () { writeLogServerUpSince(); }, 60000); } //************************************************************************ // Utilities function writeLogWithTimeStamp(message) { console.log(formatDate(new Date()) + " " + message); } function writeLog(message) { console.log(message); } function writeLogServerUpSince() { writeLogWithTimeStamp("Server up since " + serverStartedDateTimeFormatted); } function pad(number, length) { var str = '' + number; while (str.length < length) { str = '0' + str; } return str; } function formatDate(date) { var dateStamp = ''; dateStamp += date.getFullYear(); dateStamp += '-'; dateStamp += date.getMonth() + 1; dateStamp += '-'; dateStamp += date.getDate(); dateStamp += '_'; dateStamp += pad(date.getHours(), 2); dateStamp += ':'; dateStamp += pad(date.getMinutes(), 2); dateStamp += ':'; dateStamp += pad(date.getSeconds(), 2); dateStamp += ':'; dateStamp += pad(date.getMilliseconds(), 3); return dateStamp; } function is_int(value) { if ((parseFloat(value) == parseInt(value)) && !isNaN(value)) { return true; } else { return false; } } process.on('uncaughtException', function (err) { console.log((new Date()).toUTCString() + ' uncaughtException:', err.message); console.error(err.stack); //process.exit(1); }); // END Utilities //************************************************************************ exports.start = start; start();