Files
joblog_parser/app.js
2023-11-15 13:36:30 +01:00

103 lines
2.6 KiB
JavaScript

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const pug = require('pug');
const server = require('http').createServer(app);
//const https = require("https");
const cookieParser = require('cookie-parser');
const fs = require('fs');
const path = require('path');
const formidable = require('formidable');
var port = 3000;
app.use(bodyParser.urlencoded({ extended: true, limit: '20mb' }));
app.use(cookieParser());
app.set('view engine', 'pug')
app.use('/assets', express.static('assets'))
app.use('/tmp', express.static('tmp'))
app.use('/files', express.static('profiles'))
// middleware function to check for logged-in users
var sessionChecker = (req, res, next) => {
next();
};
// route for Home-Page
app.get('/', sessionChecker, (req, res) => {
var pageTitle = "Log Parser - Start";
res.render('intro', { title: pageTitle })
});
app.route('/upload')
.get(sessionChecker, (req, res) => {
res.redirect('/');
})
.post((req, res, next) => {
var pageTitle = 'Log Parser - Result';
const form = formidable({ keepExtensions: true, uploadDir: "tmp" });
form.parse(req, (err, fields, files) => {
if (err) {
next(err);
return;
}
fs.open(files.logfile.path, 'r', function (err, f) {
if (err) {
return console.error(err);
}
var result = fs.readFileSync(f).toString().split("\n");
var jobType = "";
/*result.forEach(function(line) {
if (checkJobType(line) !== undefined) {
jobType = checkJobType(line);
}
}); */
res.render('upload', {title: pageTitle, files: files, jobtype: jobType, data: result});
});
});
});
server.listen(port, function(){
console.log('Server started. Listening on *:' + port);
});
// helpers
function uniq(a) {
return a.sort().filter(function(item, pos, ary) {
return !pos || item != ary[pos - 1];
})
}
function isPresetNum(number, def) {
return isNaN(number) || number == "" ? def : parseInt(number);
}
function findDuplicate(users, clientemail) {
let result = users.filter((item) =>
item.email === clientemail &&
item.type === 'attendee').length > 0;
return result;
}
function fmtMSS(s){return(s-(s%=60))/60+(9<s?':':':0')+s}
function checkJobType(line) {
if (/SNBSVH_220J/.test(line)) {
return line.match(/(?:type: )(.*)(?:\))/)[1];
}
if (/SNBJH_3403J/.test(line)) {
return "Condense";
}
if (/SNBJH_3208J/.test(line)) {
return line.match(/job type (.*)\)/)[1];
}
}