update Mi 17. Jun 22:01:01 CEST 2020

This commit is contained in:
Robert Richter 2020-06-17 22:01:01 +02:00
parent 03b972a5fa
commit 9456aaac2e
3 changed files with 51 additions and 240 deletions

214
package-lock.json generated
View File

@ -1382,11 +1382,6 @@
} }
} }
}, },
"addressparser": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz",
"integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y="
},
"after": { "after": {
"version": "0.8.2", "version": "0.8.2",
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
@ -1606,41 +1601,6 @@
"concat-map": "0.0.1" "concat-map": "0.0.1"
} }
}, },
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
},
"buildmail": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.10.0.tgz",
"integrity": "sha1-xoJtcW55RbtvaxQ0tTmF4CmgMVk=",
"requires": {
"addressparser": "1.0.1",
"libbase64": "0.1.0",
"libmime": "2.1.0",
"libqp": "1.1.0",
"nodemailer-fetch": "1.6.0",
"nodemailer-shared": "1.1.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
"integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI="
},
"libmime": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.0.tgz",
"integrity": "sha1-Ubx23iKDFh65BRxLyArtcT5P0c0=",
"requires": {
"iconv-lite": "0.4.13",
"libbase64": "0.1.0",
"libqp": "1.1.0"
}
}
}
},
"bytes": { "bytes": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@ -1969,14 +1929,6 @@
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
}, },
"dkim-signer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dkim-signer/-/dkim-signer-0.2.2.tgz",
"integrity": "sha1-qoHsBx7u02IngbqpIgRNeADl8wg=",
"requires": {
"libmime": "^2.0.3"
}
},
"doctypes": { "doctypes": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
@ -1996,14 +1948,6 @@
"safer-buffer": "^2.1.0" "safer-buffer": "^2.1.0"
} }
}, },
"ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -2649,23 +2593,6 @@
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
}, },
"jsonwebtoken": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
"integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
"requires": {
"jws": "^3.2.2",
"lodash.includes": "^4.3.0",
"lodash.isboolean": "^3.0.3",
"lodash.isinteger": "^4.0.4",
"lodash.isnumber": "^3.0.3",
"lodash.isplainobject": "^4.0.6",
"lodash.isstring": "^4.0.1",
"lodash.once": "^4.0.0",
"ms": "^2.1.1",
"semver": "^5.6.0"
}
},
"jsprim": { "jsprim": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@ -2686,25 +2613,6 @@
"promise": "^7.0.1" "promise": "^7.0.1"
} }
}, },
"jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
"requires": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
},
"jws": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
"requires": {
"jwa": "^1.4.1",
"safe-buffer": "^5.0.1"
}
},
"kind-of": { "kind-of": {
"version": "3.2.2", "version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@ -2718,33 +2626,6 @@
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
}, },
"libbase64": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz",
"integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY="
},
"libmime": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.3.tgz",
"integrity": "sha1-JQF8pataHpiq2+JyUBfPHUikKgw=",
"requires": {
"iconv-lite": "0.4.15",
"libbase64": "0.1.0",
"libqp": "1.1.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
"integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es="
}
}
},
"libqp": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz",
"integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g="
},
"lineclip": { "lineclip": {
"version": "1.1.5", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz", "resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz",
@ -2760,72 +2641,11 @@
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
}, },
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
},
"lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
},
"lodash.isinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
},
"lodash.isnumber": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
},
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
},
"lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
},
"lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
"longest": { "longest": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
}, },
"mailcomposer": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.12.0.tgz",
"integrity": "sha1-nF4RiKqOHGLsi4a9Q0aBArY56Pk=",
"requires": {
"buildmail": "3.10.0",
"libmime": "2.1.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
"integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI="
},
"libmime": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.0.tgz",
"integrity": "sha1-Ubx23iKDFh65BRxLyArtcT5P0c0=",
"requires": {
"iconv-lite": "0.4.13",
"libbase64": "0.1.0",
"libqp": "1.1.0"
}
}
}
},
"media-typer": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -2947,18 +2767,10 @@
"tar": "^4" "tar": "^4"
} }
}, },
"nodemailer-fetch": { "nodemailer": {
"version": "1.6.0", "version": "6.4.10",
"resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.10.tgz",
"integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=" "integrity": "sha512-j+pS9CURhPgk6r0ENr7dji+As2xZiHSvZeVnzKniLOw1eRAyM/7flP0u65tCnsapV8JFu+t0l/5VeHsCZEeh9g=="
},
"nodemailer-shared": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz",
"integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=",
"requires": {
"nodemailer-fetch": "1.6.0"
}
}, },
"nopt": { "nopt": {
"version": "4.0.1", "version": "4.0.1",
@ -6199,15 +6011,6 @@
} }
} }
}, },
"passport-jwt": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.0.tgz",
"integrity": "sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==",
"requires": {
"jsonwebtoken": "^8.2.0",
"passport-strategy": "^1.0.0"
}
},
"passport-local": { "passport-local": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
@ -6670,15 +6473,6 @@
} }
} }
}, },
"sendmail": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/sendmail/-/sendmail-1.6.1.tgz",
"integrity": "sha512-lIhvnjSi5e5jL8wA1GPP6j2QVlx6JOEfmdn0QIfmuJdmXYGmJ375kcOU0NSm/34J+nypm4sa1AXrYE5w3uNIIA==",
"requires": {
"dkim-signer": "0.2.2",
"mailcomposer": "3.12.0"
}
},
"serve-favicon": { "serve-favicon": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz",

View File

@ -21,15 +21,14 @@
"express": "^4.17.1", "express": "^4.17.1",
"express-session": "^1.17.0", "express-session": "^1.17.0",
"json2csv": "^5.0.1", "json2csv": "^5.0.1",
"nodemailer": "^6.4.10",
"npm": "^6.13.4", "npm": "^6.13.4",
"passport": "^0.4.1", "passport": "^0.4.1",
"passport-ip": "^0.1.2", "passport-ip": "^0.1.2",
"passport-jwt": "^4.0.0",
"passport-local": "^1.0.0", "passport-local": "^1.0.0",
"passport.socketio": "^3.7.0", "passport.socketio": "^3.7.0",
"pug": "^2.0.4", "pug": "^2.0.4",
"req-flash": "0.0.3", "req-flash": "0.0.3",
"sendmail": "^1.6.1",
"serve-favicon": "^2.5.0", "serve-favicon": "^2.5.0",
"socket.io": "^2.3.0", "socket.io": "^2.3.0",
"socket.io-client": "^2.3.0", "socket.io-client": "^2.3.0",

View File

@ -1,10 +1,10 @@
module.exports = function (io, sql, fs, brk, async, app_cfg) { module.exports = function (io, sql, fs, brk, async, app_cfg) {
// Module laden // Module laden
const { parse } = require('json2csv'); const {
const sendmail = require('sendmail')({ parse
silent: true } = require('json2csv');
}); const nodemailer = require('nodemailer');
function waip_speichern(einsatz_daten) { function waip_speichern(einsatz_daten) {
// Einsatzmeldung in Datenbank speichern und verteilen // Einsatzmeldung in Datenbank speichern und verteilen
@ -309,7 +309,10 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
data.forEach(function (row) { data.forEach(function (row) {
// fuer jede Wache (row.room) die verbundenen Sockets(Clients) ermitteln und Standby senden // fuer jede Wache (row.room) die verbundenen Sockets(Clients) ermitteln und Standby senden
var room_sockets = io.nsps['/waip'].adapter.rooms[row.room]; var room_sockets = io.nsps['/waip'].adapter.rooms[row.room];
console.log('room_sockets');
if (typeof room_sockets !== 'undefined') { if (typeof room_sockets !== 'undefined') {
console.log(room_sockets.sockets);
Object.keys(room_sockets.sockets).forEach(function (socket_id) { Object.keys(room_sockets.sockets).forEach(function (socket_id) {
// Standby senden // Standby senden
var socket = io.of('/waip').connected[socket_id]; var socket = io.of('/waip').connected[socket_id];
@ -352,12 +355,14 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
// FIXME full_rmld.filter(obj => obj.wache_id.startsWith(export_data.export_filter)); // FIXME full_rmld.filter(obj => obj.wache_id.startsWith(export_data.export_filter));
// CSV-Spalten definieren // CSV-Spalten definieren
var csv_col = ['id', 'einsatznummer', 'waip_uuid', 'rmld_uuid', 'alias', 'einsatzkraft', 'maschinist', 'fuehrungskraft', 'agt', 'set_time', 'arrival_time', 'wache_id', 'wache_nr', 'wache_name']; var csv_col = ['id', 'einsatznummer', 'waip_uuid', 'rmld_uuid', 'alias', 'einsatzkraft', 'maschinist', 'fuehrungskraft', 'agt', 'set_time', 'arrival_time', 'wache_id', 'wache_nr', 'wache_name'];
var opts = { csv_col }; var opts = {
csv_col
};
try { try {
var csv = parse(part_rmld, opts); var csv = parse(part_rmld, opts);
console.log(csv); console.log(csv);
// CSV Dateiname und Pfad festlegen // CSV Dateiname und Pfad festlegen
//FIXME csv export nochmals prüfen //TODO csv export nochmals prüfen
var csv_filename = 'einsatz_' + part_rmld[0].einsatznummer + '_export_' + export_data.export_name.replace(/[/\\?%*:|"<>]/g, '') + '.csv'; var csv_filename = 'einsatz_' + part_rmld[0].einsatznummer + '_export_' + export_data.export_name.replace(/[/\\?%*:|"<>]/g, '') + '.csv';
csv_path = process.cwd() + app_cfg.rmld.backup_path; csv_path = process.cwd() + app_cfg.rmld.backup_path;
//+ csv_filename; //+ csv_filename;
@ -365,7 +370,9 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
// CSV in Backup-Ordner speichern, falls aktiviert // CSV in Backup-Ordner speichern, falls aktiviert
if (app_cfg.rmld.backup_to_file) { if (app_cfg.rmld.backup_to_file) {
// Ordner erstellen // Ordner erstellen
fs.mkdir(csv_path, { recursive: true }, function (err) { fs.mkdir(csv_path, {
recursive: true
}, function (err) {
if (err) { if (err) {
sql.db_log('EXPORT', 'Fehler beim Erstellen des Backup-Ordners: ' + err); sql.db_log('EXPORT', 'Fehler beim Erstellen des Backup-Ordners: ' + err);
}; };
@ -384,25 +391,36 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
// pruefen ob Mail plausibel ist // pruefen ob Mail plausibel ist
var validmail = /\S+@\S+\.\S+/; var validmail = /\S+@\S+\.\S+/;
if (validmail.test(export_data.export_recipient)) { if (validmail.test(export_data.export_recipient)) {
var mail_from = 'keineantwort@wachalarm.info.tm'; //+ app_cfg.global.url.replace(/(^\w+:|^)\/\//, ''); // Mail-Server
var mail_subject = 'Automatischer Export Rückmeldungen Wachalarm-IP - ' + export_data.export_name + ' - Einsatz ' + part_rmld[0].einsatznummer; var transport = nodemailer.createTransport({
var mail_html = 'Hallo,<br><br> anbei der automatische Export aller Einsatz-R&uuml;ckmeldungen f&uuml;r den Einsatz ' + part_rmld[0].einsatznummer + '<br><br>Mit freundlichen Gr&uuml;&szlig;en<br><br>' + app_cfg.global.company; host: app_cfg.rmld.mailserver_host,
sendmail({ port: app_cfg.rmld.mailserver_port,
from: mail_from, secure: app_cfg.rmld.secure_mail,
auth: {
user: app_cfg.rmld.mail_user,
pass: app_cfg.rmld.mail_pass
}
});
var mail_message = {
from: {
name: 'Wachalarm-IP-Web - ' + app_cfg.global.company,
address: app_cfg.rmld.mail_from
},
to: export_data.export_recipient, to: export_data.export_recipient,
subject: mail_subject, subject: 'Automatischer Export Wachalarm-IP-Web - ' + export_data.export_name + ' - Einsatz ' + part_rmld[0].einsatznummer,
html: mail_html, text: 'Hallo,<br><br> anbei der automatische Export aller Einsatz-R&uuml;ckmeldungen f&uuml;r den Einsatz ' + part_rmld[0].einsatznummer + '<br><br>Mit freundlichen Gr&uuml;&szlig;en<br><br>' + app_cfg.global.company,
attachments: [{ attachments: [{
filename: csv_filename, filename: csv_filename,
content: csv content: csv
}] }]
}, function (err, reply) {
if (!err) {
sql.db_log('EXPORT', 'Mail an ' + export_data.mail_subject + ' gesendet - ' + reply);
} else {
sql.db_log('EXPORT', 'Fehler beim senden der Export-Mail an ' + export_data.mail_subject + ' - ' + err + '; ' + err.stack);
}; };
}) transport.sendMail(mail_message, function (err, info) {
if (err) {
sql.db_log('EXPORT', 'Fehler beim senden der Export-Mail an ' + export_data.mail_subject + ': ' + err);
} else {
sql.db_log('EXPORT', 'Mail an ' + export_data.mail_subject + ' gesendet: ' + info);
}
});
} else { } else {
sql.db_log('EXPORT', 'Fehler beim versenden der Export-Mail an ' + export_data.mail_subject + ' - keine richtige Mail-Adresse!'); sql.db_log('EXPORT', 'Fehler beim versenden der Export-Mail an ' + export_data.mail_subject + ' - keine richtige Mail-Adresse!');
}; };