From 0aea2a57348cb43e801fcc9f47314e80f485c9d9 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Mon, 27 Apr 2020 15:31:01 +0200 Subject: [PATCH] update Mo 27. Apr 15:31:01 CEST 2020 --- public/js/client_waip.js | 2 +- server/socket.js | 19 ++++++++++++------- server/sql_qry.js | 6 +++--- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/public/js/client_waip.js b/public/js/client_waip.js index abfc206..7c4c779 100644 --- a/public/js/client_waip.js +++ b/public/js/client_waip.js @@ -222,7 +222,7 @@ var marker = L.marker(new L.LatLng(0, 0), { /* ########################### */ // Websocket -var socket = io.connect(); +var socket = io('/waip'); // Wachen-ID bei Connect an Server senden socket.on('connect', function() { diff --git a/server/socket.js b/server/socket.js index 3bdfaa6..9cde42b 100755 --- a/server/socket.js +++ b/server/socket.js @@ -14,14 +14,18 @@ module.exports = function (io, sql, app_cfg, waip) { socket_api.emit('CH01', 'me', 'test msg'); // Socket.IO Server - io.on('connection', function (socket) { - + + var nsp_waip = io.of('/waip'); + + nsp_waip.on('connection', function (socket) { + var client_ip = socket.handshake.headers["x-real-ip"] || socket.handshake.headers['x-forwarded-for'] || socket.request.connection.remoteAddress; //zuerst Server-Version senden, damit der Client diese prueft und die Seite ggf. neu lädt //io.sockets.to(socket.id).emit('io.version', app_cfg.global.app_id); socket.emit('io.version', app_cfg.global.app_id); // Aufruf des Alarmmonitors einer bestimmten Wache verarbeiten socket.on('WAIP', function (wachen_id) { - sql.db_log('WAIP', 'Alarmmonitor Nr. ' + wachen_id + ' von ' + socket.request.connection.remoteAddress + ' (' + socket.id + ') aufgerufen'); + + sql.db_log('WAIP', 'Alarmmonitor Nr. ' + wachen_id + ' von ' + client_ip + ' (' + socket.id + ') aufgerufen'); // prüfen ob Wachenummer in der Datenbank hinterlegt ist sql.db_wache_vorhanden(wachen_id, function (result) { // wenn die Wachennummer vorhanden/plausibel dann weiter @@ -29,7 +33,7 @@ module.exports = function (io, sql, app_cfg, waip) { // Socket-Room beitreiten socket.join(wachen_id, function () { // Socket-ID und Client-IP in der Datenbank speichern - sql.db_client_save(socket.id, socket.request.connection.remoteAddress, wachen_id); + sql.db_client_save(socket.id, client_ip, wachen_id); // prüfen ob für diese Wache Einsätze vorhanden sind sql.db_einsatz_ermitteln(wachen_id, socket.request.user.id, function (result_einsatz) { if (result_einsatz) { @@ -56,14 +60,15 @@ module.exports = function (io, sql, app_cfg, waip) { }); } else { sql.db_log('Fehler-WAIP', 'Fehler: Wachnnummer ' + wachen_id + 'nicht vorhanden'); - io.sockets.to(socket.id).emit('io.error', 'Fehler: Wachnnummer \'' + wachen_id + '\' nicht vorhanden!'); + // io.sockets.to(socket.id).emit('io.error', 'Fehler: Wachnnummer \'' + wachen_id + '\' nicht vorhanden!'); + socket.emit('io.error', 'Fehler: Wachnnummer \'' + wachen_id + '\' nicht vorhanden!'); }; }); }); // disconnect verarbeiten socket.on('disconnect', function () { - sql.db_log('WAIP', 'Alarmmonitor von ' + socket.request.connection.remoteAddress + ' (' + socket.id + ') geschlossen'); - sql.db_client_delete(socket.id); + sql.db_log('WAIP', 'Alarmmonitor von ' + client_ip + ' (' + socket.id + ') geschlossen'); + sql.db_client_delete(socket); }); }); }; \ No newline at end of file diff --git a/server/sql_qry.js b/server/sql_qry.js index a3f71f4..0307dde 100755 --- a/server/sql_qry.js +++ b/server/sql_qry.js @@ -373,9 +373,9 @@ module.exports = function(db, uuidv4, turf, app_cfg) { room_name + '\')'); }; - function db_client_delete(client_id) { + function db_client_delete(socket) { db.run('DELETE FROM waip_clients ' + - 'WHERE socket_id = ?', client_id); + 'WHERE socket_id = ?', socket.id); }; // Funkrufname @@ -414,7 +414,7 @@ module.exports = function(db, uuidv4, turf, app_cfg) { var user_name = socket.request.user.user; var user_permissions = socket.request.user.permissions; var user_agent = socket.request.headers['user-agent']; - var client_ip = socket.request.connection.remoteAddress; + var client_ip = socket.handshake.headers["x-real-ip"] || socket.handshake.headers['x-forwarded-for'] || socket.request.connection.remoteAddress; var reset_timestamp = socket.request.user.reset_counter; if (isNaN(client_status) || client_status == null) { client_status = 'Standby';