103 lines
2.6 KiB
JavaScript
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];
|
|
}
|
|
}
|