diff --git a/package-lock.json b/package-lock.json
index 780febc..2326b6b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -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": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
@@ -1606,41 +1601,6 @@
"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": {
"version": "3.1.0",
"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",
"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": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
@@ -1996,14 +1948,6 @@
"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": {
"version": "1.1.1",
"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",
"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": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -2686,25 +2613,6 @@
"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": {
"version": "3.2.2",
"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",
"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": {
"version": "1.1.5",
"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",
"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": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
"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": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -2947,18 +2767,10 @@
"tar": "^4"
}
},
- "nodemailer-fetch": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz",
- "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q="
- },
- "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"
- }
+ "nodemailer": {
+ "version": "6.4.10",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.10.tgz",
+ "integrity": "sha512-j+pS9CURhPgk6r0ENr7dji+As2xZiHSvZeVnzKniLOw1eRAyM/7flP0u65tCnsapV8JFu+t0l/5VeHsCZEeh9g=="
},
"nopt": {
"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": {
"version": "1.0.0",
"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": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz",
diff --git a/package.json b/package.json
index a5932fe..c3eb51b 100644
--- a/package.json
+++ b/package.json
@@ -21,15 +21,14 @@
"express": "^4.17.1",
"express-session": "^1.17.0",
"json2csv": "^5.0.1",
+ "nodemailer": "^6.4.10",
"npm": "^6.13.4",
"passport": "^0.4.1",
"passport-ip": "^0.1.2",
- "passport-jwt": "^4.0.0",
"passport-local": "^1.0.0",
"passport.socketio": "^3.7.0",
"pug": "^2.0.4",
"req-flash": "0.0.3",
- "sendmail": "^1.6.1",
"serve-favicon": "^2.5.0",
"socket.io": "^2.3.0",
"socket.io-client": "^2.3.0",
diff --git a/server/waip.js b/server/waip.js
index 735ab36..d30f2d7 100755
--- a/server/waip.js
+++ b/server/waip.js
@@ -1,10 +1,10 @@
module.exports = function (io, sql, fs, brk, async, app_cfg) {
// Module laden
- const { parse } = require('json2csv');
- const sendmail = require('sendmail')({
- silent: true
- });
+ const {
+ parse
+ } = require('json2csv');
+ const nodemailer = require('nodemailer');
function waip_speichern(einsatz_daten) {
// Einsatzmeldung in Datenbank speichern und verteilen
@@ -309,7 +309,10 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
data.forEach(function (row) {
// fuer jede Wache (row.room) die verbundenen Sockets(Clients) ermitteln und Standby senden
var room_sockets = io.nsps['/waip'].adapter.rooms[row.room];
+ console.log('room_sockets');
+
if (typeof room_sockets !== 'undefined') {
+ console.log(room_sockets.sockets);
Object.keys(room_sockets.sockets).forEach(function (socket_id) {
// Standby senden
var socket = io.of('/waip').connected[socket_id];
@@ -348,16 +351,18 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
var part_rmld = full_rmld;
console.log('bereite export vor');
console.log(part_rmld);
-
+
// FIXME full_rmld.filter(obj => obj.wache_id.startsWith(export_data.export_filter));
// 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 opts = { csv_col };
+ var opts = {
+ csv_col
+ };
try {
var csv = parse(part_rmld, opts);
console.log(csv);
// 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';
csv_path = process.cwd() + app_cfg.rmld.backup_path;
//+ csv_filename;
@@ -365,18 +370,20 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
// CSV in Backup-Ordner speichern, falls aktiviert
if (app_cfg.rmld.backup_to_file) {
// Ordner erstellen
- fs.mkdir(csv_path, { recursive: true }, function (err) {
+ fs.mkdir(csv_path, {
+ recursive: true
+ }, function (err) {
if (err) {
sql.db_log('EXPORT', 'Fehler beim Erstellen des Backup-Ordners: ' + err);
};
- // CSV speichern
- fs.writeFile(csv_path + csv_filename, csv, function (err) {
- if (err) {
- console.log(err);
- sql.db_log('EXPORT', 'Fehler beim speichern der Export-CSV: ' + err);
- };
+ // CSV speichern
+ fs.writeFile(csv_path + csv_filename, csv, function (err) {
+ if (err) {
+ console.log(err);
+ sql.db_log('EXPORT', 'Fehler beim speichern der Export-CSV: ' + err);
+ };
+ });
});
- });
};
//FIXME anderen Email-Dienst
// CSV per Mail versenden, falls aktiviert
@@ -384,25 +391,36 @@ module.exports = function (io, sql, fs, brk, async, app_cfg) {
// pruefen ob Mail plausibel ist
var validmail = /\S+@\S+\.\S+/;
if (validmail.test(export_data.export_recipient)) {
- var mail_from = 'keineantwort@wachalarm.info.tm'; //+ app_cfg.global.url.replace(/(^\w+:|^)\/\//, '');
- var mail_subject = 'Automatischer Export Rückmeldungen Wachalarm-IP - ' + export_data.export_name + ' - Einsatz ' + part_rmld[0].einsatznummer;
- var mail_html = 'Hallo,
anbei der automatische Export aller Einsatz-Rückmeldungen für den Einsatz ' + part_rmld[0].einsatznummer + '
Mit freundlichen Grüßen
' + app_cfg.global.company;
- sendmail({
- from: mail_from,
+ // Mail-Server
+ var transport = nodemailer.createTransport({
+ host: app_cfg.rmld.mailserver_host,
+ port: app_cfg.rmld.mailserver_port,
+ 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,
- subject: mail_subject,
- html: mail_html,
+ subject: 'Automatischer Export Wachalarm-IP-Web - ' + export_data.export_name + ' - Einsatz ' + part_rmld[0].einsatznummer,
+ text: 'Hallo,
anbei der automatische Export aller Einsatz-Rückmeldungen für den Einsatz ' + part_rmld[0].einsatznummer + '
Mit freundlichen Grüßen
' + app_cfg.global.company,
attachments: [{
filename: csv_filename,
content: csv
}]
- }, function (err, reply) {
- if (!err) {
- sql.db_log('EXPORT', 'Mail an ' + export_data.mail_subject + ' gesendet - ' + reply);
+ };
+ 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', 'Fehler beim senden der Export-Mail an ' + export_data.mail_subject + ' - ' + err + '; ' + err.stack);
- };
- })
+ sql.db_log('EXPORT', 'Mail an ' + export_data.mail_subject + ' gesendet: ' + info);
+ }
+ });
} else {
sql.db_log('EXPORT', 'Fehler beim versenden der Export-Mail an ' + export_data.mail_subject + ' - keine richtige Mail-Adresse!');
};