update Di 24. Mär 15:01:01 CET 2020

This commit is contained in:
Robert Richter 2020-03-24 15:01:01 +01:00
parent 6aef654c66
commit c92f74cab6
3 changed files with 77 additions and 113 deletions

View File

@ -201,11 +201,6 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp)
app.post('/rmld/:waip_uuid/:rmld_uuid', function(req, res) { app.post('/rmld/:waip_uuid/:rmld_uuid', function(req, res) {
var waip_uuid = req.body.waip_uuid; var waip_uuid = req.body.waip_uuid;
var rmld_uuid = req.body.rmld_uuid; var rmld_uuid = req.body.rmld_uuid;
//var rmld_obj = Object.assign(req.params, req.body);
//console.log(req.params);
//console.log(req.body);
//console.log(rmld_obj);
sql.db_save_rmld(req.body, function(result){ sql.db_save_rmld(req.body, function(result){
if (result) { if (result) {
req.flash('successMessage', 'Rückmeldung erfolgreich gesendet, auf zum Einsatz!'); req.flash('successMessage', 'Rückmeldung erfolgreich gesendet, auf zum Einsatz!');

View File

@ -221,7 +221,7 @@ module.exports = function(db, uuidv4, turf, app_cfg) {
}); });
}; };
function db_get_einsatzwachen(waip_id, callback) { function db_get_einsatz_rooms(waip_id, callback) {
db.all(`select w.nr_kreis room from waip_wachen w db.all(`select w.nr_kreis room from waip_wachen w
left join waip_einsatzmittel em on em.wachenname = w.name_wache left join waip_einsatzmittel em on em.wachenname = w.name_wache
where em.waip_einsaetze_ID = ? group by w.nr_kreis where em.waip_einsaetze_ID = ? group by w.nr_kreis
@ -882,7 +882,7 @@ module.exports = function(db, uuidv4, turf, app_cfg) {
db_wache_id_ermitteln: db_wache_id_ermitteln, db_wache_id_ermitteln: db_wache_id_ermitteln,
db_wache_nr_ermitteln: db_wache_nr_ermitteln, db_wache_nr_ermitteln: db_wache_nr_ermitteln,
db_get_einsatzdaten: db_get_einsatzdaten, db_get_einsatzdaten: db_get_einsatzdaten,
db_get_einsatzwachen: db_get_einsatzwachen, db_get_einsatz_rooms: db_get_einsatz_rooms,
db_list_wachen: db_list_wachen, db_list_wachen: db_list_wachen,
db_list_traeger: db_list_traeger, db_list_traeger: db_list_traeger,
db_list_kreis: db_list_kreis, db_list_kreis: db_list_kreis,

View File

@ -1,15 +1,15 @@
module.exports = function(io, sql, tw, async, app_cfg) { module.exports = function (io, sql, tw, async, app_cfg) {
// Einsatzmeldung in Datenbank speichern // Einsatzmeldung in Datenbank speichern
function einsatz_speichern(message) { function einsatz_speichern(message) {
// Einsatzmeldung (JSON) speichern // Einsatzmeldung (JSON) speichern
sql.db_einsatz_speichern(JSON.parse(message), function(waip_id) { sql.db_einsatz_speichern(JSON.parse(message), function (waip_id) {
// nach dem Speichern anhand der waip_id die beteiligten Wachennummern zum Einsatz ermitteln // nach dem Speichern anhand der waip_id die beteiligten Wachennummern zum Einsatz ermitteln
sql.db_log('WAIP', 'DEBUG: ' + waip_id); sql.db_log('WAIP', 'DEBUG: ' + waip_id);
sql.db_get_einsatzwachen(waip_id, function(data) { sql.db_get_einsatz_rooms(waip_id, function (data) {
if (data) { if (data) {
console.log(data); console.log(data);
data.forEach(function(row) { data.forEach(function (row) {
// fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen // fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen
var room_sockets = io.sockets.adapter.rooms[row.room]; var room_sockets = io.sockets.adapter.rooms[row.room];
//console.log(row); //console.log(row);
@ -17,7 +17,7 @@ module.exports = function(io, sql, tw, async, app_cfg) {
//console.log(room_sockets); //console.log(room_sockets);
//console.log(io.sockets.adapter); //console.log(io.sockets.adapter);
if (typeof room_sockets !== 'undefined') { if (typeof room_sockets !== 'undefined') {
Object.keys(room_sockets.sockets).forEach(function(socketId) { Object.keys(room_sockets.sockets).forEach(function (socketId) {
einsatz_verteilen(waip_id, socketId, row.room); einsatz_verteilen(waip_id, socketId, row.room);
sql.db_log('WAIP', 'Einsatz ' + waip_id + ' wird an ' + socketId + ' (' + row.room + ') gesendet'); sql.db_log('WAIP', 'Einsatz ' + waip_id + ' wird an ' + socketId + ' (' + row.room + ') gesendet');
}); });
@ -27,12 +27,12 @@ module.exports = function(io, sql, tw, async, app_cfg) {
sql.db_log('Fehler-WAIP', 'Fehler: Wache für waip_id ' + waip_id + ' nicht vorhanden!'); sql.db_log('Fehler-WAIP', 'Fehler: Wache für waip_id ' + waip_id + ' nicht vorhanden!');
}; };
}); });
sql.db_get_twitter_list(waip_id, function(twitter_data) { sql.db_get_twitter_list(waip_id, function (twitter_data) {
if (twitter_data) { if (twitter_data) {
console.log('Daten Twitter: ' + JSON.stringify(twitter_data)); console.log('Daten Twitter: ' + JSON.stringify(twitter_data));
// tw.tw_screen_name, tw_consumer_key, tw.tw_consumer_secret, tw.tw_access_token_key, tw.tw_access_token_secret, we.uuid, we.einsatzart, wa.name_wache // tw.tw_screen_name, tw_consumer_key, tw.tw_consumer_secret, tw.tw_access_token_key, tw.tw_access_token_secret, we.uuid, we.einsatzart, wa.name_wache
tw.alert_twitter_list(twitter_data, function(result) { tw.alert_twitter_list(twitter_data, function (result) {
if (!result) { if (!result) {
sql.db_log('Twitter', 'Einsatz-Rückmeldung erfolgreichen an Twitter-Liste gesendet. ' + result); sql.db_log('Twitter', 'Einsatz-Rückmeldung erfolgreichen an Twitter-Liste gesendet. ' + result);
} else { } else {
@ -50,11 +50,11 @@ module.exports = function(io, sql, tw, async, app_cfg) {
// Einsatz an Client verteilen // Einsatz an Client verteilen
function einsatz_verteilen(waip_id, socket_id, wachen_nr) { function einsatz_verteilen(waip_id, socket_id, wachen_nr) {
// Einsatzdaten für eine Wache aus Datenbank laden // Einsatzdaten für eine Wache aus Datenbank laden
sql.db_get_einsatzdaten(waip_id, wachen_nr, io.sockets.sockets[socket_id].request.user.id, function(einsatzdaten) { sql.db_get_einsatzdaten(waip_id, wachen_nr, io.sockets.sockets[socket_id].request.user.id, function (einsatzdaten) {
if (einsatzdaten) { if (einsatzdaten) {
// Berechtigung ueberpruefen // Berechtigung ueberpruefen
var user = io.sockets.sockets[socket_id].request.user; var user = io.sockets.sockets[socket_id].request.user;
sql.db_check_permission(user, waip_id, function(valid) { sql.db_check_permission(user, waip_id, function (valid) {
//console.log(permissions + ' ' + wachen_nr); //console.log(permissions + ' ' + wachen_nr);
//if (permissions == wachen_nr || permissions == 'admin') {} else { //if (permissions == wachen_nr || permissions == 'admin') {} else {
if (!valid) { if (!valid) {
@ -69,7 +69,7 @@ module.exports = function(io, sql, tw, async, app_cfg) {
sql.db_log('WAIP', 'Einsatz ' + waip_id + ' fuer Wache ' + wachen_nr + ' an Socket ' + socket_id + ' gesendet'); sql.db_log('WAIP', 'Einsatz ' + waip_id + ' fuer Wache ' + wachen_nr + ' an Socket ' + socket_id + ' gesendet');
sql.db_update_client_status(io.sockets.sockets[socket_id], waip_id); sql.db_update_client_status(io.sockets.sockets[socket_id], waip_id);
// Sound erstellen // Sound erstellen
tts_erstellen(app_cfg, socket_id, einsatzdaten, function(tts) { tts_erstellen(app_cfg, socket_id, einsatzdaten, function (tts) {
if (tts) { if (tts) {
// Sound senden // Sound senden
sql.db_log('WAIP', 'ttsfile: ' + tts); sql.db_log('WAIP', 'ttsfile: ' + tts);
@ -87,50 +87,21 @@ module.exports = function(io, sql, tw, async, app_cfg) {
}; };
function reuckmeldung_verteilen_by_uuid(waip_uuid, rmld_uuid) { function reuckmeldung_verteilen_by_uuid(waip_uuid, rmld_uuid) {
console.log(waip_uuid); // Einsatz-ID mittels Einsatz-UUID ermitteln
console.log(rmld_uuid); sql.db_get_waipid_by_uuid(waip_uuid, function (waip_id) {
sql.db_get_waipid_by_uuid(waip_uuid, function(waip_id) { // am Einsatz beteilite Socket-Räume ermitteln
sql.db_get_einsatz_rooms(waip_id, function (socket_rooms) {
console.log('rueckmeldung waip_id: '+waip_id); if (socket_rooms) {
// wenn Raum zum Einsatz vorhanden ist, dann Rueckmeldung aus DB laden und an diesen versenden
sql.db_get_single_response_by_rmlduuid(rmld_uuid, function (rmld) {
sql.db_get_einsatzwachen(waip_id, function(data) {
console.log(data);
if (data) {
data.forEach(function(row) {
console.log(row.room);
sql.db_get_single_response_by_rmlduuid(rmld_uuid, function(rmld){
console.log('vorhandene reuckmeldungen fuer die wache: ' + JSON.stringify(rmld));
if (rmld) { if (rmld) {
//waip.reuckmeldung_senden(socket.id, rmld); // Rückmeldung an Clients/Räume senden
io.to(row.room).emit('io.response', rmld); socket_rooms.forEach(function (rooms) {
io.to(rooms.room).emit('io.response', rmld);
sql.db_log('RMLD', 'Rückmeldung ' + rmld_uuid + ' für den Einsatz mit der ID ' + waip_id + ' an Raum ' + rooms.room + ' gesendet.');
});
}; };
}); });
/* var room_stockets = io.sockets.adapter.rooms[socketid];
if (typeof socketid !== 'undefined') {
Object.keys(room_stockets.sockets).forEach(function(socket_id) {
io.sockets.to(socketid).emit('io.response', rmld)
sql.db_log('WAIP', 'Rückmeldung ' + rmld + ' an Socket ' + socket_id + ' gesendet');
});
};*/
//sql.db_get_response_wache(waip_id, row.room, function(result){
//console.log('response_wache: ' + result);
//if (row.room) {
//reuckmeldung_verteilen(waip_id, result);
//};
//});
});
} else {
sql.db_log('Fehler-WAIP', 'Fehler: Wache für waip_id ' + waip_id + ' nicht vorhanden, Rückmeldung konnte nicht verteilt werden!');
}; };
}); });
}); });
@ -138,7 +109,7 @@ module.exports = function(io, sql, tw, async, app_cfg) {
function reuckmeldung_senden(socketid, rmld) { function reuckmeldung_senden(socketid, rmld) {
//console.log('rueckmeldung alt: '+waip_id + ' ' + result); //console.log('rueckmeldung alt: '+waip_id + ' ' + result);
//sql.db_get_einsatzwachen(waip_id, function(data) { //sql.db_get_einsatz_rooms(waip_id, function(data) {
// if (data) { // if (data) {
//data.forEach(function(row) { //data.forEach(function(row) {
// fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen // fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen
@ -171,7 +142,7 @@ module.exports = function(io, sql, tw, async, app_cfg) {
var mp3_bell = process.cwd() + app_cfg.global.soundpath + 'bell_short.mp3'; var mp3_bell = process.cwd() + app_cfg.global.soundpath + 'bell_short.mp3';
}; };
// Zusammensetzen der Sprachansage // Zusammensetzen der Sprachansage
async.map(JSON.parse(einsatzdaten.em_alarmiert), sql.db_tts_einsatzmittel, function(err, einsatzmittel) { async.map(JSON.parse(einsatzdaten.em_alarmiert), sql.db_tts_einsatzmittel, function (err, einsatzmittel) {
// Grunddaten // Grunddaten
var tts_text = einsatzdaten.einsatzart + ', ' + einsatzdaten.stichwort; var tts_text = einsatzdaten.einsatzart + ', ' + einsatzdaten.stichwort;
if (einsatzdaten.objekt) { if (einsatzdaten.objekt) {
@ -220,11 +191,11 @@ module.exports = function(io, sql, tw, async, app_cfg) {
var childD = proc.spawn('powershell', commands); var childD = proc.spawn('powershell', commands);
childD.stdin.setEncoding('ascii'); childD.stdin.setEncoding('ascii');
childD.stderr.setEncoding('ascii'); childD.stderr.setEncoding('ascii');
childD.stderr.on('data', function(data) { childD.stderr.on('data', function (data) {
sql.db_log('Fehler-TTS', data); sql.db_log('Fehler-TTS', data);
callback && callback(null); callback && callback(null);
}); });
childD.on('exit', function() { childD.on('exit', function () {
callback && callback(mp3_url); callback && callback(mp3_url);
}); });
childD.stdin.end(); childD.stdin.end();
@ -248,9 +219,9 @@ module.exports = function(io, sql, tw, async, app_cfg) {
var childD = proc.spawn('/bin/sh', commands); var childD = proc.spawn('/bin/sh', commands);
childD.stdin.setEncoding('ascii'); childD.stdin.setEncoding('ascii');
childD.stderr.setEncoding('ascii'); childD.stderr.setEncoding('ascii');
childD.on('exit', function(code, signal) { childD.on('exit', function (code, signal) {
if (code > 0) { if (code > 0) {
sql.db_log('Fehler-TTS', 'Exit-Code '+ code +'; Fehler beim erstellen der TTS-Datei'); sql.db_log('Fehler-TTS', 'Exit-Code ' + code + '; Fehler beim erstellen der TTS-Datei');
callback && callback(null); callback && callback(null);
} else { } else {
callback && callback(mp3_url); callback && callback(mp3_url);
@ -267,11 +238,11 @@ module.exports = function(io, sql, tw, async, app_cfg) {
}; };
// Aufräumen (alle 10 Sekunden) // Aufräumen (alle 10 Sekunden)
setInterval(function() { setInterval(function () {
// alle User-Einstellungen prüfen und ggf. Standby senden // alle User-Einstellungen prüfen und ggf. Standby senden
sql.db_get_sockets_to_standby(function(socket_ids){ sql.db_get_sockets_to_standby(function (socket_ids) {
if (socket_ids) { if (socket_ids) {
socket_ids.forEach(function(row) { socket_ids.forEach(function (row) {
io.sockets.to(row.socket_id).emit('io.standby', null); io.sockets.to(row.socket_id).emit('io.standby', null);
io.sockets.to(row.socket_id).emit('io.stopaudio', null); io.sockets.to(row.socket_id).emit('io.stopaudio', null);
sql.db_log('WAIP', 'Standby an Socket ' + row.socket_id + ' gesendet'); sql.db_log('WAIP', 'Standby an Socket ' + row.socket_id + ' gesendet');
@ -280,20 +251,20 @@ module.exports = function(io, sql, tw, async, app_cfg) {
}; };
}); });
// Nach alten Einsaetzen suchen und diese ggf. loeschen // Nach alten Einsaetzen suchen und diese ggf. loeschen
sql.db_get_alte_einsaetze(app_cfg.global.time_to_delete_waip, function(waip_id) { sql.db_get_alte_einsaetze(app_cfg.global.time_to_delete_waip, function (waip_id) {
if (waip_id) { if (waip_id) {
sql.db_log('WAIP', 'Einsatz mit der ID ' + waip_id + ' ist veraltet und kann gelöscht werden.') sql.db_log('WAIP', 'Einsatz mit der ID ' + waip_id + ' ist veraltet und kann gelöscht werden.')
//beteiligte Wachen ermitteln //beteiligte Wachen ermitteln
sql.db_get_einsatzwachen(waip_id, function(data) { sql.db_get_einsatz_rooms(waip_id, function (data) {
if (data) { if (data) {
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_stockets = io.sockets.adapter.rooms[row.room]; var room_stockets = io.sockets.adapter.rooms[row.room];
if (typeof room_stockets !== 'undefined') { if (typeof room_stockets !== 'undefined') {
Object.keys(room_stockets.sockets).forEach(function(socketId) { Object.keys(room_stockets.sockets).forEach(function (socketId) {
// Standby senden // Standby senden
// TODO: Standby nur senden, wenn kein anderer (als der zu löschende) Einsatz angezeigt wird // TODO: Standby nur senden, wenn kein anderer (als der zu löschende) Einsatz angezeigt wird
sql.db_check_client_waipid(socketId, waip_id, function(same_id) { sql.db_check_client_waipid(socketId, waip_id, function (same_id) {
if (same_id) { if (same_id) {
io.sockets.to(socketId).emit('io.standby', null); io.sockets.to(socketId).emit('io.standby', null);
io.sockets.to(socketId).emit('io.stopaudio', null); io.sockets.to(socketId).emit('io.stopaudio', null);
@ -312,15 +283,13 @@ module.exports = function(io, sql, tw, async, app_cfg) {
}; };
}); });
// TODO: löschen alter Sounddaten nach alter (15min) und socket-id (nicht mehr verbunden) // TODO: löschen alter Sounddaten nach alter (15min) und socket-id (nicht mehr verbunden)
// TODO: Löschen alter Einstze nach 24 h
// alte mp3s loeschen
const fs = require('fs'); const fs = require('fs');
fs.readdirSync(process.cwd() + app_cfg.global.soundpath).forEach(file => { fs.readdirSync(process.cwd() + app_cfg.global.soundpath).forEach(file => {
// nur die mp3s von alten clients loeschen // nur die mp3s von alten clients loeschen
if (file.substring(0, 4) != 'bell' && file.substring(file.length - 3) == 'mp3' && file.substring(file.length - 8) != '_tmp.mp3') { if (file.substring(0, 4) != 'bell' && file.substring(file.length - 3) == 'mp3' && file.substring(file.length - 8) != '_tmp.mp3') {
sql.db_get_socket_by_id(file.substring(0, file.length - 4), function(data) { sql.db_get_socket_by_id(file.substring(0, file.length - 4), function (data) {
if (!data) { if (!data) {
fs.unlink(process.cwd() + app_cfg.global.soundpath + file, function(err) { fs.unlink(process.cwd() + app_cfg.global.soundpath + file, function (err) {
if (err) return sql.db_log('Fehler-WAIP', err); if (err) return sql.db_log('Fehler-WAIP', err);
sql.db_log('WAIP', file + ' wurde erfolgreich geloescht'); sql.db_log('WAIP', file + ' wurde erfolgreich geloescht');
}); });