update So 21. Jun 22:31:01 CEST 2020

This commit is contained in:
Robert Richter 2020-06-21 22:31:01 +02:00
parent 001d2379de
commit 211634bd7c

View File

@ -8,15 +8,13 @@ module.exports = function (app_cfg, sql, waip, uuidv4, io, remote_api) {
// Speichern eines neuen Einsatzes
function save_new_waip(waip_data, remote_addr, app_id) {
// ist JSON?
if (isValidJSON(waip_data)) {
// Daten validieren
validate_waip(waip_data, function (valid) {
if (valid) {
// ist JSON valide
validate_waip(waip_data, function (waip_json) {
if (waip_json) {
// Polygon erzeugen und zuweisen falls nicht vorhanden
if (!waip_data.ortsdaten.wgs84_area) {
var wgs_x = parseFloat(waip_data.ortsdaten.wgs84_x);
var wgs_y = parseFloat(waip_data.ortsdaten.wgs84_y);
if (!waip_json.ortsdaten.wgs84_area) {
var wgs_x = parseFloat(waip_json.ortsdaten.wgs84_x);
var wgs_y = parseFloat(waip_json.ortsdaten.wgs84_y);
var point = turf.point([wgs_y, wgs_x]);
var buffered = turf.buffer(point, 1, {
steps: app_cfg.global.circumcircle,
@ -30,36 +28,33 @@ module.exports = function (app_cfg, sql, waip, uuidv4, io, remote_api) {
steps: app_cfg.global.circumcircle,
units: 'kilometers'
})
waip_data.ortsdaten.wgs84_area = new_buffer;
waip_json.ortsdaten.wgs84_area = new_buffer;
};
// pruefen, ob vielleicht schon ein Einsatz mit einer UUID gespeichert ist
sql.db_einsatz_get_uuid_by_enr(waip_data.einsatzdaten.nummer, function (waip_uuid) {
sql.db_einsatz_get_uuid_by_enr(waip_json.einsatzdaten.nummer, function (waip_uuid) {
if (waip_uuid) {
// wenn ein Einsatz mit UUID schon vorhanden ist, dann diese setzten / ueberschreiben
waip_data.einsatzdaten.uuid = waip_uuid;
waip_json.einsatzdaten.uuid = waip_uuid;
} else {
// uuid erzeugen und zuweisen falls nicht bereits in JSON vorhanden, oder falls keine korrekte uuid
if (!waip_data.einsatzdaten.uuid || !uuid_pattern.test(waip_data.einsatzdaten.uuid)) {
waip_data.einsatzdaten.uuid = uuidv4();
if (!waip_json.einsatzdaten.uuid || !uuid_pattern.test(waip_json.einsatzdaten.uuid)) {
waip_json.einsatzdaten.uuid = uuidv4();
};
};
// nicht erwuenschte Daten ggf. enfernen (Datenschutzoption)
filter_api_data(waip_data, remote_addr, function (data_filtered) {
filter_api_data(waip_json, remote_addr, function (data_filtered) {
// Einsatz in DB Speichern
waip.waip_speichern(data_filtered);
sql.db_log('WAIP', 'Neuer Einsatz von ' + remote_addr + ' wird jetzt verarbeitet: ' + JSON.stringify(data_filtered));
});
// Einsatzdaten per API weiterleiten (entweder zum Server oder zum verbunden Client)
api_server_to_client_new_waip(waip_data, app_id);
api_client_to_server_new_waip(waip_data, app_id);
api_server_to_client_new_waip(waip_json, app_id);
api_client_to_server_new_waip(waip_json, app_id);
});
} else {
sql.db_log('WAIP', 'Fehler: Einsatz von ' + remote_addr + ' nicht valide: ' + JSON.stringify(waip_data));
};
});
} else {
sql.db_log('WAIP', 'Fehler: Einsatz von ' + remote_addr + ' Fehlerhaft: ' + JSON.stringify(waip_data));
};
};
function save_new_rmld(data, remote_addr, app_id, callback) {
@ -86,35 +81,52 @@ module.exports = function (app_cfg, sql, waip, uuidv4, io, remote_api) {
});
};
// Funktion um zu pruefen, ob Nachricht im JSON-Format ist
function isValidJSON(json_obj) {
try {
// versuche das JSON-Objekt zu parsen, falls es ein JSON-String ist
var tmp = JSON.parse(json_obj);
return tmp;
} catch (e) {
// klappt das Parson nicht, versuche den JSON-String in String zu kopieren
var text = JSON.stringify(json_obj);
// teste ob der String JSON-Konform ist
if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
var tmp = JSON.parse(json_obj);
return tmp;
} else {
return false;
};
};
};
function validate_waip(data, callback) {
// TODO Validierung: Einsatzdaten auf Validität prüfen
// Log
if (app_cfg.global.development) {
console.log('Validierung WAIP: ' + JSON.stringify(data));
// Typ ist NULL
if (data === null) {
callback && callback(false);
};
callback && callback(true);
// SQL-Log
// Typ ist undefined
if (data === undefined) {
callback && callback(false);
};
// Typ ist String
if (data.constructor == String) {
// teste ob der String JSON-Konform ist
var text = JSON.stringify(data);
if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
// falls ja, dann versuche String in JSON zu parsen
try {
var tmp = JSON.parse(text);
callback && callback(tmp);
} catch (error) {
callback && callback(false);
};
} else {
callback && callback(false);
};
};
// Typ ist Object
if (data.constructor === Object) {
console.log(data);
try {
var tmp = JSON.parse(text);
console.log(tmp);
callback && callback(tmp);
} catch (error) {
callback && callback(false);
};
};
// Log
if (app_cfg.global.development) {
//console.log('Validierung WAIP: ' + JSON.stringify(data));
};
};
function validate_rmld(data, callback) {