From c92f74cab6903dfa4becad0ea39e8d836b455b80 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Tue, 24 Mar 2020 15:01:01 +0100 Subject: [PATCH] =?UTF-8?q?update=20Di=2024.=20M=C3=A4r=2015:01:01=20CET?= =?UTF-8?q?=202020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routing.js | 5 -- server/sql_qry.js | 4 +- server/waip.js | 181 +++++++++++++++++++--------------------------- 3 files changed, 77 insertions(+), 113 deletions(-) diff --git a/server/routing.js b/server/routing.js index 1c6083d..f47afa0 100755 --- a/server/routing.js +++ b/server/routing.js @@ -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) { var waip_uuid = req.body.waip_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){ if (result) { req.flash('successMessage', 'Rückmeldung erfolgreich gesendet, auf zum Einsatz!'); diff --git a/server/sql_qry.js b/server/sql_qry.js index e53d324..ea9bc06 100755 --- a/server/sql_qry.js +++ b/server/sql_qry.js @@ -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 left join waip_einsatzmittel em on em.wachenname = w.name_wache 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_nr_ermitteln: db_wache_nr_ermitteln, 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_traeger: db_list_traeger, db_list_kreis: db_list_kreis, diff --git a/server/waip.js b/server/waip.js index 30049c9..583fb08 100755 --- a/server/waip.js +++ b/server/waip.js @@ -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 function einsatz_speichern(message) { // 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 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) { console.log(data); - data.forEach(function(row) { + data.forEach(function (row) { // fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen var room_sockets = io.sockets.adapter.rooms[row.room]; //console.log(row); @@ -17,7 +17,7 @@ module.exports = function(io, sql, tw, async, app_cfg) { //console.log(room_sockets); //console.log(io.sockets.adapter); 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); sql.db_log('WAIP', 'Einsatz ' + waip_id + ' wird an ' + socketId + ' (' + row.room + ') gesendet'); }); @@ -27,19 +27,19 @@ 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_get_twitter_list(waip_id, function(twitter_data) { + sql.db_get_twitter_list(waip_id, function (twitter_data) { if (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.alert_twitter_list(twitter_data, function(result) { + tw.alert_twitter_list(twitter_data, function (result) { if (!result) { sql.db_log('Twitter', 'Einsatz-Rückmeldung erfolgreichen an Twitter-Liste gesendet. ' + result); } else { sql.db_log('Twitter', 'Fehler beim senden der Einsatz-Rueckmeldung an Twitter: ' + result); }; }); - + } else { sql.db_log('Twitter', 'Keine Twitter-Liste für Einsatz ' + waip_id + ' hinterlegt.'); }; @@ -50,11 +50,11 @@ module.exports = function(io, sql, tw, async, app_cfg) { // Einsatz an Client verteilen function einsatz_verteilen(waip_id, socket_id, wachen_nr) { // 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) { // Berechtigung ueberpruefen 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); //if (permissions == wachen_nr || permissions == 'admin') {} else { if (!valid) { @@ -62,19 +62,19 @@ module.exports = function(io, sql, tw, async, app_cfg) { einsatzdaten.besonderheiten = ''; einsatzdaten.strasse = ''; einsatzdaten.wgs84_x = einsatzdaten.wgs84_x.substring(0, einsatzdaten.wgs84_x.indexOf('.') + 3); - einsatzdaten.wgs84_y = einsatzdaten.wgs84_y.substring(0, einsatzdaten.wgs84_y.indexOf('.') + 3); + einsatzdaten.wgs84_y = einsatzdaten.wgs84_y.substring(0, einsatzdaten.wgs84_y.indexOf('.') + 3); }; // Einsatz senden io.sockets.to(socket_id).emit('io.neuerEinsatz', einsatzdaten) 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); // Sound erstellen - tts_erstellen(app_cfg, socket_id, einsatzdaten, function(tts) { - if (tts) { - // Sound senden - sql.db_log('WAIP', 'ttsfile: ' + tts); - io.sockets.to(socket_id).emit('io.playtts', tts); - }; + tts_erstellen(app_cfg, socket_id, einsatzdaten, function (tts) { + if (tts) { + // Sound senden + sql.db_log('WAIP', 'ttsfile: ' + tts); + io.sockets.to(socket_id).emit('io.playtts', tts); + }; }); }); } else { @@ -87,50 +87,21 @@ module.exports = function(io, sql, tw, async, app_cfg) { }; function reuckmeldung_verteilen_by_uuid(waip_uuid, rmld_uuid) { - console.log(waip_uuid); - console.log(rmld_uuid); - sql.db_get_waipid_by_uuid(waip_uuid, function(waip_id) { - - console.log('rueckmeldung waip_id: '+waip_id); - - - - 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) { - //waip.reuckmeldung_senden(socket.id, rmld); - io.to(row.room).emit('io.response', rmld); - }; - }); - - /* 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); - //}; - //}); - + // Einsatz-ID mittels Einsatz-UUID ermitteln + 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) { + 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) { + if (rmld) { + // Rückmeldung an Clients/Räume senden + 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.'); + }); + }; }); - } else { - sql.db_log('Fehler-WAIP', 'Fehler: Wache für waip_id ' + waip_id + ' nicht vorhanden, Rückmeldung konnte nicht verteilt werden!'); }; }); }); @@ -138,21 +109,21 @@ module.exports = function(io, sql, tw, async, app_cfg) { function reuckmeldung_senden(socketid, rmld) { //console.log('rueckmeldung alt: '+waip_id + ' ' + result); - //sql.db_get_einsatzwachen(waip_id, function(data) { - // if (data) { - //data.forEach(function(row) { - // fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen - //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 ' + socketid + ' gesendet'); - //}); - }; - //}); - //} else { - //sql.db_log('Fehler-WAIP', 'Fehler: Wache für waip_id ' + waip_id + ' nicht vorhanden, Rückmeldung konnte nicht verteilt werden!'); - //}; + //sql.db_get_einsatz_rooms(waip_id, function(data) { + // if (data) { + //data.forEach(function(row) { + // fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Einsatz verteilen + //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 ' + socketid + ' gesendet'); + //}); + }; + //}); + //} else { + //sql.db_log('Fehler-WAIP', 'Fehler: Wache für waip_id ' + waip_id + ' nicht vorhanden, Rückmeldung konnte nicht verteilt werden!'); + //}; //}); }; @@ -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'; }; // 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 var tts_text = einsatzdaten.einsatzart + ', ' + einsatzdaten.stichwort; if (einsatzdaten.objekt) { @@ -195,7 +166,7 @@ module.exports = function(io, sql, tw, async, app_cfg) { tts_text = tts_text.replace(/-/g, " "); // Sprachansage als mp3 erstellen switch (process.platform) { - //if (process.platform === "win32") { + //if (process.platform === "win32") { case 'win32': // Powershell var proc = require('child_process'); @@ -220,11 +191,11 @@ module.exports = function(io, sql, tw, async, app_cfg) { var childD = proc.spawn('powershell', commands); childD.stdin.setEncoding('ascii'); childD.stderr.setEncoding('ascii'); - childD.stderr.on('data', function(data) { + childD.stderr.on('data', function (data) { sql.db_log('Fehler-TTS', data); callback && callback(null); }); - childD.on('exit', function() { + childD.on('exit', function () { callback && callback(mp3_url); }); childD.stdin.end(); @@ -234,7 +205,7 @@ module.exports = function(io, sql, tw, async, app_cfg) { var proc = require('child_process'); var commands = [ // TTS-Schnittstelle SVOX PicoTTS - '-c', ` + '-c', ` pico2wave --lang=de-DE --wave=` + wav_tts + ` \"` + tts_text + `\" ffmpeg -nostats -hide_banner -loglevel 0 -y -i ` + wav_tts + ` -vn -ar 44100 -ac 2 -ab 128k -f mp3 ` + mp3_tmp + ` ffmpeg -nostats -hide_banner -loglevel 0 -y -i \"concat:` + mp3_bell + `|` + mp3_tmp + `\" -acodec copy ` + mp3_tts + ` @@ -248,17 +219,17 @@ module.exports = function(io, sql, tw, async, app_cfg) { var childD = proc.spawn('/bin/sh', commands); childD.stdin.setEncoding('ascii'); childD.stderr.setEncoding('ascii'); - childD.on('exit', function(code, signal) { - if (code > 0) { - sql.db_log('Fehler-TTS', 'Exit-Code '+ code +'; Fehler beim erstellen der TTS-Datei'); - callback && callback(null); - } else { - callback && callback(mp3_url); - }; + childD.on('exit', function (code, signal) { + if (code > 0) { + sql.db_log('Fehler-TTS', 'Exit-Code ' + code + '; Fehler beim erstellen der TTS-Datei'); + callback && callback(null); + } else { + callback && callback(mp3_url); + }; }); - childD.stdin.end(); + childD.stdin.end(); break; - // } else { + // } else { default: sql.db_log('Fehler-TTS', 'TTS für dieses Server-Betriebssystem nicht verfügbar'); callback && callback(null); @@ -267,11 +238,11 @@ module.exports = function(io, sql, tw, async, app_cfg) { }; // Aufräumen (alle 10 Sekunden) - setInterval(function() { + setInterval(function () { // 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) { - 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.stopaudio', null); 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 - 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) { sql.db_log('WAIP', 'Einsatz mit der ID ' + waip_id + ' ist veraltet und kann gelöscht werden.') //beteiligte Wachen ermitteln - sql.db_get_einsatzwachen(waip_id, function(data) { + sql.db_get_einsatz_rooms(waip_id, function (data) { if (data) { - data.forEach(function(row) { + data.forEach(function (row) { // fuer jede Wache(row.room) die verbundenen Sockets(Clients) ermitteln und Standby senden var room_stockets = io.sockets.adapter.rooms[row.room]; if (typeof room_stockets !== 'undefined') { - Object.keys(room_stockets.sockets).forEach(function(socketId) { + Object.keys(room_stockets.sockets).forEach(function (socketId) { // Standby senden // 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) { io.sockets.to(socketId).emit('io.standby', 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 Einstze nach 24 h - // alte mp3s loeschen const fs = require('fs'); fs.readdirSync(process.cwd() + app_cfg.global.soundpath).forEach(file => { // 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') { - 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) { - 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); sql.db_log('WAIP', file + ' wurde erfolgreich geloescht'); }); @@ -334,8 +303,8 @@ module.exports = function(io, sql, tw, async, app_cfg) { return { einsatz_speichern: einsatz_speichern, - einsatz_verteilen: einsatz_verteilen, - reuckmeldung_senden: reuckmeldung_senden, - reuckmeldung_verteilen_by_uuid: reuckmeldung_verteilen_by_uuid + einsatz_verteilen: einsatz_verteilen, + reuckmeldung_senden: reuckmeldung_senden, + reuckmeldung_verteilen_by_uuid: reuckmeldung_verteilen_by_uuid }; -}; +}; \ No newline at end of file