55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
const micro = require('micro');
|
|
const { json, send } = require('micro');
|
|
const { RuleEngine } = require('./RuleEngine');
|
|
const fs = require('fs');
|
|
const jsonminify = require('jsonminify');
|
|
const winston = require("winston");
|
|
|
|
const logger = winston.createLogger({
|
|
level: 'info',
|
|
format: winston.format.combine(
|
|
winston.format.timestamp(),
|
|
winston.format.printf(info => {
|
|
return `${info.timestamp} ${info.level}: ${info.message}`;
|
|
})
|
|
),
|
|
transports: [
|
|
new winston.transports.Console(),
|
|
new winston.transports.File({ filename: './log/LogAggregatorError.log', level: 'error' }),
|
|
new winston.transports.File({ filename: './log/Combined.log' })
|
|
]
|
|
});
|
|
|
|
|
|
const ruleEngine = new RuleEngine("*");
|
|
logger.log("info", "Service Starting logAggregator v0.1 by j.tretter@gmail.com");
|
|
const server = micro(async (req, res) => {
|
|
const js = await json(req);
|
|
|
|
try {
|
|
allInputLines = JSON.parse(js);
|
|
} catch (ex) {
|
|
logger.log("error", "Input not in JSON format:" + js);
|
|
send(res, 401, "Input not in JSON Format");
|
|
}
|
|
|
|
for(i=0;i<allInputLines.length;i++){
|
|
let theInputLine=allInputLines[i];
|
|
let isWhiteListed = ruleEngine.processData(theInputLine);
|
|
let miniInput = jsonminify(JSON.stringify(theInputLine));
|
|
let now = Date();
|
|
if (isWhiteListed) {
|
|
logger.log("debug", "Not Whitelisted: " + miniInput);
|
|
fs.appendFileSync("./log/skipped.log", miniInput + "\n");
|
|
process.stdout.write(".");
|
|
} else {
|
|
logger.log("debug", "Not Whitelisted: " + miniInput);
|
|
fs.appendFileSync("./log/issues.log", miniInput + "\n");
|
|
process.stdout.write("!");
|
|
}
|
|
}
|
|
|
|
send(res, 200, "OK");
|
|
});
|
|
|
|
server.listen(2222); |