update Do 28. Mai 21:31:01 CEST 2020

This commit is contained in:
Robert Richter 2020-05-28 21:31:01 +02:00
parent e06496834d
commit d062bbf04a
2 changed files with 44 additions and 28 deletions

View File

@ -282,7 +282,7 @@ module.exports = function (app, sql, uuidv4, app_cfg, passport, auth, waip, udp)
// Logdatei // Logdatei
app.get('/adm_show_log', auth.ensureAdmin, function (req, res) { app.get('/adm_show_log', auth.ensureAdmin, function (req, res) {
sql.db_log_get_all(function (data) { sql.db_log_get_5000(function (data) {
res.render('admin/adm_show_log', { res.render('admin/adm_show_log', {
public: app_cfg.public, public: app_cfg.public,
title: 'Log-Datei', title: 'Log-Datei',

View File

@ -233,6 +233,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_einsatz_get_waipid_by_uuid(waip_uuid, callback) { function db_einsatz_get_waipid_by_uuid(waip_uuid, callback) {
// mit uuid die zugehoerige id des Einsatzes finden
db.get(`SELECT id FROM WAIP_EINSAETZE WHERE uuid like ?`, [waip_uuid], function (err, row) { db.get(`SELECT id FROM WAIP_EINSAETZE WHERE uuid like ?`, [waip_uuid], function (err, row) {
if (err == null && row) { if (err == null && row) {
callback && callback(row.id); callback && callback(row.id);
@ -243,6 +244,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_einsatz_get_active(callback) { function db_einsatz_get_active(callback) {
// alle aktivieren Einsaetze finden
db.all(`select we.uuid, we.einsatzart, we.stichwort, we.ort, we.ortsteil, we.wgs84_area, db.all(`select we.uuid, we.einsatzart, we.stichwort, we.ort, we.ortsteil, we.wgs84_area,
GROUP_concat(DISTINCT substr( wa.nr_wache, 0, 3 )) a, GROUP_concat(DISTINCT substr( wa.nr_wache, 0, 3 )) a,
GROUP_concat(DISTINCT substr( wa.nr_wache, 0, 5 )) b, GROUP_concat(DISTINCT substr( wa.nr_wache, 0, 5 )) b,
@ -261,6 +263,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_einsatz_get_rooms(waip_id, callback) { function db_einsatz_get_rooms(waip_id, callback) {
// alle potenziellen Socket-Rooms fuer einen Einsatz finden
db.all(`select '0' room db.all(`select '0' room
union all union all
select w.nr_kreis room from waip_wachen w select w.nr_kreis room from waip_wachen w
@ -284,6 +287,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_einsatz_get_old(minuten, callback) { function db_einsatz_get_old(minuten, callback) {
// veraltete Einsaetze finden
db.each('SELECT id FROM waip_einsaetze WHERE zeitstempel <= datetime(\'now\',\'-' + minuten + ' minutes\')', function (err, row) { db.each('SELECT id FROM waip_einsaetze WHERE zeitstempel <= datetime(\'now\',\'-' + minuten + ' minutes\')', function (err, row) {
if (err == null && row) { if (err == null && row) {
callback && callback(row.id); callback && callback(row.id);
@ -294,6 +298,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_einsatz_loeschen(id) { function db_einsatz_loeschen(id) {
// Einsatz loeschen
db.run(`DELETE FROM waip_einsaetze WHERE id = ?`, [id]); db.run(`DELETE FROM waip_einsaetze WHERE id = ?`, [id]);
}; };
@ -312,21 +317,21 @@ module.exports = function (db, uuidv4, app_cfg) {
}); });
}; };
function db_wache_vorhanden(content, callback) { function db_wache_vorhanden(wachen_nr, callback) {
// wenn content keine Nummer ist, abbrechen // Prueffunktion um zu erkennen ob wachen_nr valide ist
if (isNaN(content)) { if (isNaN(wachen_nr)) {
// Fehler: Wachennummer nicht korrekt. // Fehler: Wachennummer nicht korrekt.
callback && callback(null); callback && callback(null);
} else { } else {
var len = content.toString().length var len = wachen_nr.toString().length
// content muss 2, 4 oder 6 Zeichen lang sein // wachen_nr muss 2, 4 oder 6 Zeichen lang sein
if (parseInt(content) != 0 && len != 2 && len != 4 && len != 6) { if (parseInt(wachen_nr) != 0 && len != 2 && len != 4 && len != 6) {
// Fehler: Wachennummer nicht plausibel. // Fehler: Wachennummer nicht plausibel.
callback && callback(null); callback && callback(null);
} else { } else {
// je nach laenge andere SQL ausfuehren // je nach laenge andere SQL ausfuehren
if (parseInt(content) == 0) { if (parseInt(wachen_nr) == 0) {
db.get('select \'1\' length, nr_wache nr, name_wache name from waip_wachen where nr_wache like ?', [content], function (err, row) { db.get('select \'1\' length, nr_wache nr, name_wache name from waip_wachen where nr_wache like ?', [wachen_nr], function (err, row) {
if (err == null && row) { if (err == null && row) {
callback && callback(row); callback && callback(row);
} else { } else {
@ -335,7 +340,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}); });
}; };
if (len == 2) { if (len == 2) {
db.get('select \'2\' length, nr_kreis nr, name_kreis name from waip_wachen where nr_kreis like SUBSTR(?,-2, 2) group by name_kreis LIMIT 1', [content], function (err, row) { db.get('select \'2\' length, nr_kreis nr, name_kreis name from waip_wachen where nr_kreis like SUBSTR(?,-2, 2) group by name_kreis LIMIT 1', [wachen_nr], function (err, row) {
if (err == null && row) { if (err == null && row) {
callback && callback(row); callback && callback(row);
} else { } else {
@ -353,7 +358,7 @@ module.exports = function (db, uuidv4, app_cfg) {
}); });
}; };
if (len == 6) { if (len == 6) {
db.get('select \'6\' length, nr_wache nr, name_wache name from waip_wachen where nr_wache like ?', [content], function (err, row) { db.get('select \'6\' length, nr_wache nr, name_wache name from waip_wachen where nr_wache like ?', [wachen_nr], function (err, row) {
if (err == null && row) { if (err == null && row) {
callback && callback(row); callback && callback(row);
} else { } else {
@ -366,17 +371,20 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_tts_einsatzmittel(einsatzmittel, callback) { function db_tts_einsatzmittel(einsatzmittel, callback) {
//{"name": "FL CB 16/23-01", "zeit": "17:16"},{"name": "FL CB 16/11-01", "zeit": "17:16"},{"name": "FL CB 16/11-01", "zeit": "17:16"},{"name": "FL CB 16/11-01", "zeit": "17:16"},{"name": "FL CB 16/11-01", "zeit": "17:16"},{"name": "FL CB 16/11-01", "zeit": "17:16"},{"name": "FL CB 16/11-01", "zeit": "17:16"} // Funkkenner der Einsatzmittel in gesprochen Text umwandeln, wenn Nomierung mit xx xx 00/00-00
var tmp = einsatzmittel.name.match(/(\d\d\-\d\d)/g); var tmp = einsatzmittel.name.match(/(\d\d\-\d\d)/g);
if (tmp) { if (tmp) {
// Einsatzmittel-Typ ermitteln
var typ = tmp.toString().substring(0, 2); var typ = tmp.toString().substring(0, 2);
// Einsatzmittel-Nr ermitteln
var nr = tmp.toString().slice(4); var nr = tmp.toString().slice(4);
nr = nr.toString().replace(/^0+/, ''); nr = nr.toString().replace(/^0+/, '');
// hinterlegte Ersetzungen finden
db.get('SELECT einsatzmittel_rufname name FROM waip_ttsreplace WHERE einsatzmittel_typ = ?', [typ], function (err, row) { db.get('SELECT einsatzmittel_rufname name FROM waip_ttsreplace WHERE einsatzmittel_typ = ?', [typ], function (err, row) {
if (err == null && row) { if (err == null && row) {
callback(null, row.name + ' ' + nr); callback(null, row.name + ' ' + nr);
} else { } else {
callback(null, einsatzmittel.name); // + err + typ + nr + '_ ' + tmp); callback(null, einsatzmittel.name);
}; };
}); });
} else { } else {
@ -385,25 +393,29 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_client_update_status(socket, client_status) { function db_client_update_status(socket, client_status) {
//console.log(socket); // Client-Status aktualisieren / speichern
var user_name = socket.request.user.user; var user_name = socket.request.user.user;
var user_permissions = socket.request.user.permissions; var user_permissions = socket.request.user.permissions;
var user_agent = socket.request.headers['user-agent']; var user_agent = socket.request.headers['user-agent'];
var client_ip = socket.handshake.headers["x-real-ip"] || socket.handshake.headers['x-forwarded-for'] || 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; var reset_timestamp = socket.request.user.reset_counter;
// Standby wenn Client-Status keine Nummer oder Null
if (isNaN(client_status) || client_status == null) { if (isNaN(client_status) || client_status == null) {
client_status = 'Standby'; client_status = 'Standby';
}; };
// wenn User-Name nicht bekannt
if (typeof user_name === "undefined") { if (typeof user_name === "undefined") {
user_name = ''; user_name = '';
}; };
// wenn User-Berechtigung nicht bekannt
if (typeof user_permissions === "undefined") { if (typeof user_permissions === "undefined") {
user_permissions = ''; user_permissions = '';
}; };
// wenn Anzeigezeit nicht bekannt, Wert aus App-Cfg setzen
if ((typeof reset_timestamp === "undefined") || (reset_timestamp == null)) { if ((typeof reset_timestamp === "undefined") || (reset_timestamp == null)) {
reset_timestamp = app_cfg.global.default_time_for_standby; reset_timestamp = app_cfg.global.default_time_for_standby;
}; };
// Daten speichern
db.run(`insert or replace into waip_clients db.run(`insert or replace into waip_clients
(id, socket_id, client_ip, room_name, client_status, user_name, user_permissions, user_agent, reset_timestamp ) values ( (id, socket_id, client_ip, room_name, client_status, user_name, user_permissions, user_agent, reset_timestamp ) values (
(select id from waip_clients where socket_id = \'` + socket.id + `\'), (select id from waip_clients where socket_id = \'` + socket.id + `\'),
@ -415,18 +427,10 @@ module.exports = function (db, uuidv4, app_cfg) {
\'` + user_permissions + `\', \'` + user_permissions + `\',
\'` + user_agent + `\', \'` + user_agent + `\',
(select DATETIME(zeitstempel,\'+\' || ` + reset_timestamp + ` || \' minutes\') from waip_einsaetze where id =\'` + client_status + `\'));`); (select DATETIME(zeitstempel,\'+\' || ` + reset_timestamp + ` || \' minutes\') from waip_einsaetze where id =\'` + client_status + `\'));`);
/*db.run(`UPDATE waip_clients
SET client_status=\'` + client_status + `\',
client_ip=\'` + client_ip + `\',
user_name=\'` + user_name + `\',
user_permissions=\'` + user_permissions + `\',
user_agent=\'` + user_agent + `\',
reset_timestamp=(select DATETIME(zeitstempel,\'+\' || ` + reset_timestamp + ` || \' minutes\') from waip_einsaetze where id =\'` + client_status + `\')
WHERE socket_id=\'` + socket_id + `\'`);*/
}; };
function db_client_get_connected(callback) { function db_client_get_connected(callback) {
// Verbunden Clients ermitteln
db.all(`select * from waip_clients`, function (err, rows) { db.all(`select * from waip_clients`, function (err, rows) {
if (err == null && rows) { if (err == null && rows) {
callback && callback(rows); callback && callback(rows);
@ -437,11 +441,13 @@ module.exports = function (db, uuidv4, app_cfg) {
}; };
function db_client_delete(socket) { function db_client_delete(socket) {
// Client aus Liste entfernen
db.run('DELETE FROM waip_clients ' + db.run('DELETE FROM waip_clients ' +
'WHERE socket_id = ?', socket.id); 'WHERE socket_id = ?', socket.id);
}; };
function db_client_check_waip_id(socketId, waip_id, callback) { function db_client_check_waip_id(socketId, waip_id, callback) {
// Pruefen ob fuer Client eine Einsatz vorhanden ist
db.get('SELECT client_status id from waip_clients where socket_id like ?', [socketId], function (err, row) { db.get('SELECT client_status id from waip_clients where socket_id like ?', [socketId], function (err, row) {
if (err == null && row) { if (err == null && row) {
if (row.id == waip_id) { if (row.id == waip_id) {
@ -463,21 +469,22 @@ module.exports = function (db, uuidv4, app_cfg) {
} else { } else {
do_log = app_cfg.global.development; do_log = app_cfg.global.development;
}; };
// Log-Eintrag // Log-Eintrag schreiben
if (do_log) { if (do_log) {
db.run(`INSERT INTO waip_log (log_typ, log_text) db.run(`INSERT INTO waip_log (log_typ, log_text)
VALUES ( VALUES (
\'` + typ + `\', \'` + typ + `\',
\'` + text + `\')`); \'` + text + `\')`);
}; };
// Log auf 50.000 Datensätze begrenzen // Log auf 50.000 Datensätze begrenzen um Speicherplatz der DB zu begrenzen
db.run(`DELETE FROM waip_log WHERE id IN db.run(`DELETE FROM waip_log WHERE id IN
( (
SELECT id FROM waip_log ORDER BY id DESC LIMIT 50000, 100 SELECT id FROM waip_log ORDER BY id DESC LIMIT 50000, 100
)`); )`);
}; };
function db_log_get_all(callback) { function db_log_get_5000(callback) {
// letzten 5000 Log-Eintraege
db.all(`select * from waip_log order by id desc LIMIT 5000`, function (err, rows) { db.all(`select * from waip_log order by id desc LIMIT 5000`, function (err, rows) {
if (err == null && rows) { if (err == null && rows) {
callback && callback(rows); callback && callback(rows);
@ -801,7 +808,7 @@ module.exports = function (db, uuidv4, app_cfg) {
db_client_delete: db_client_delete, db_client_delete: db_client_delete,
db_client_check_waip_id: db_client_check_waip_id, db_client_check_waip_id: db_client_check_waip_id,
db_log: db_log, db_log: db_log,
db_log_get_all: db_log_get_all, db_log_get_5000: db_log_get_5000,
db_socket_get_by_id: db_socket_get_by_id, db_socket_get_by_id: db_socket_get_by_id,
db_socket_get_all_to_standby: db_socket_get_all_to_standby, db_socket_get_all_to_standby: db_socket_get_all_to_standby,
db_user_set_config: db_user_set_config, db_user_set_config: db_user_set_config,
@ -977,6 +984,15 @@ db_list_wachen: db_list_wachen,
}; };
}); });
}; };
db.run(`UPDATE waip_clients
SET client_status=\'` + client_status + `\',
client_ip=\'` + client_ip + `\',
user_name=\'` + user_name + `\',
user_permissions=\'` + user_permissions + `\',
user_agent=\'` + user_agent + `\',
reset_timestamp=(select DATETIME(zeitstempel,\'+\' || ` + reset_timestamp + ` || \' minutes\') from waip_einsaetze where id =\'` + client_status + `\')
WHERE socket_id=\'` + socket_id + `\'`);
*/ */