From eac60918c713a0254a964edc2fbc49a60fd09853 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Mon, 15 Jun 2020 21:01:01 +0200 Subject: [PATCH] update Mo 15. Jun 21:01:01 CEST 2020 --- server.js | 6 ++-- server/saver.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ server/udp.js | 34 +++++------------------ 3 files changed, 83 insertions(+), 30 deletions(-) create mode 100755 server/saver.js diff --git a/server.js b/server.js index 40eb1d3..a6484e0 100644 --- a/server.js +++ b/server.js @@ -42,10 +42,10 @@ var proof = require('./server/proof')(app_cfg, sql); var waip = require('./server/waip')(io, sql, fs, brk, async, app_cfg, proof); var socket = require('./server/socket')(io, sql, app_cfg, waip); var api = require('./server/api')(io, sql, app_cfg, waip); -var udp = require('./server/udp')(app_cfg, waip, sql, api); +var saver = require('./server/proof')(app_cfg, sql, waip, api, uuidv4); +var udp = require('./server/udp')(app_cfg, sql, saver); var auth = require('./server/auth')(app, app_cfg, sql_cfg, async, bcrypt, passport, io); -var routes = require('./server/routing')(app, sql, uuidv4, app_cfg, passport, auth, waip, udp, api); - +var routes = require('./server/routing')(app, sql, uuidv4, app_cfg, passport, auth, waip, udp, saver); // Server starten webserver.listen(app_cfg.global.https_port, function () { diff --git a/server/saver.js b/server/saver.js new file mode 100755 index 0000000..8658ac6 --- /dev/null +++ b/server/saver.js @@ -0,0 +1,73 @@ +module.exports = function (app_cfg, sql, waip, api, uuidv4) { + +// Module laden + +// Variablen festlegen +var uuid_pattern = new RegExp('^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', 'i'); + +function save_new_waip(data, app_id) { + + if (isValidJSON(message)) { + sql.db_log('WAIP', 'Neuer Einsatz von ' + remote.address + ':' + remote.port + ': ' + message); + } else { + sql.db_log('Fehler-WAIP', 'Fehler: Einsatz von ' + remote.address + ':' + remote.port + ' Fehlerhaft: ' + message); + }; + + message = JSON.parse(message); + + // Funktion um zu pruefen, ob Nachricht im JSON-Format ist + function isValidJSON(text) { + try { + JSON.parse(text); + return true; + } catch (error) { + return false; + } + }; + + + + waip.waip_speichern(message); + // Einsatzdaten per API weiterleiten (entweder zum Server oder zum verbunden Client) + // TODO TEST: Api WAIP + api.server_to_client_new_waip(message, 'udp'); + api.client_to_server_new_waip(message, 'udp'); + + + + + // Rückmeldung an verbundenen Client senden, falls funktion aktiviert + if (app_cfg.api.enabled) { + // testen ob app_id auch eine uuid ist, falls nicht, eigene app_uuid setzen + if (!uuid_pattern.test(app_id)) { + app_id = app_cfg.global.app_id; + }; + nsp_api.emit('from_server_to_client_new_waip', { + data: data, + app_id: app_id + }); + sql.db_log('API', 'Einsatz an ' + app_cfg.endpoint.host + ' gesendet: ' + JSON.stringify(data)); + }; +}; + +function save_new_rmld(data, app_id) { + // Rückmeldung an verbundenen Client senden, falls funktion aktiviert + if (app_cfg.api.enabled) { + // testen ob app_id auch eine uuid ist, falls nicht, eigene app_uuid setzen + if (!uuid_pattern.test(app_id)) { + app_id = app_cfg.global.app_id; + }; + nsp_api.emit('from_server_to_client_new_rmld', { + data: data, + app_id: app_id + }); + sql.db_log('API', 'Rückmeldung an ' + app_cfg.endpoint.host + ' gesendet: ' + JSON.stringify(data)); + }; +}; + +return { + save_new_waip: save_new_waip, + save_new_rmld: save_new_rmld +}; + +}; \ No newline at end of file diff --git a/server/udp.js b/server/udp.js index b7093fd..1ceefb0 100644 --- a/server/udp.js +++ b/server/udp.js @@ -1,50 +1,30 @@ -module.exports = function(app_cfg, waip, sql, api) { +module.exports = function (app_cfg, sql, saver) { // Module laden var dgram = require('dgram'); var udp_server = dgram.createSocket('udp4'); - // Funktion um zu pruefen, ob Nachricht im JSON-Format ist - function isValidJSON(text) { - try { - JSON.parse(text); - return true; - } catch (error) { - return false; - } - }; - // UDP-Server für Schnittstelle starten udp_server.bind(app_cfg.global.udpport); - udp_server.on('listening', function() { + udp_server.on('listening', function () { var address = udp_server.address(); sql.db_log('Anwendung', 'UDP Server auf ' + address.address + ':' + address.port + ' gestartet.'); }); // Warten auf Einsatzdaten - udp_server.on('message', function(message, remote) { - if (isValidJSON(message)) { - message = JSON.parse(message); - sql.db_log('WAIP', 'Neuer Einsatz von ' + remote.address + ':' + remote.port + ': ' + message); - waip.waip_speichern(message); - // Einsatzdaten per API weiterleiten (entweder zum Server oder zum verbunden Client) - // TODO TEST: Api WAIP - api.server_to_client_new_waip(message, 'udp'); - api.client_to_server_new_waip(message, 'udp'); - } else { - sql.db_log('Fehler-WAIP', 'Fehler: Einsatz von ' + remote.address + ':' + remote.port + ' Fehlerhaft: ' + message); - } + udp_server.on('message', function (message, remote) { + saver.save_new_waip(message, 'udp') }); + // UDP-Daten senden function send_message(message) { - udp_server.send(message, 0, message.length, app_cfg.global.udpport, 'localhost', function(err, bytes) { + udp_server.send(message, 0, message.length, app_cfg.global.udpport, 'localhost', function (err, bytes) { if (err) throw err; sql.db_log('UDP-Testalarm an Localhost (Port ' + app_cfg.global.udpport + ') gesendet.'); - //client.close(); }); }; return { send_message: send_message }; -}; +}; \ No newline at end of file