update So 21. Jun 22:31:01 CEST 2020
This commit is contained in:
parent
001d2379de
commit
211634bd7c
160
server/saver.js
160
server/saver.js
@ -8,58 +8,53 @@ module.exports = function (app_cfg, sql, waip, uuidv4, io, remote_api) {
|
|||||||
|
|
||||||
// Speichern eines neuen Einsatzes
|
// Speichern eines neuen Einsatzes
|
||||||
function save_new_waip(waip_data, remote_addr, app_id) {
|
function save_new_waip(waip_data, remote_addr, app_id) {
|
||||||
// ist JSON?
|
// ist JSON valide
|
||||||
if (isValidJSON(waip_data)) {
|
validate_waip(waip_data, function (waip_json) {
|
||||||
// Daten validieren
|
if (waip_json) {
|
||||||
validate_waip(waip_data, function (valid) {
|
// Polygon erzeugen und zuweisen falls nicht vorhanden
|
||||||
if (valid) {
|
if (!waip_json.ortsdaten.wgs84_area) {
|
||||||
// Polygon erzeugen und zuweisen falls nicht vorhanden
|
var wgs_x = parseFloat(waip_json.ortsdaten.wgs84_x);
|
||||||
if (!waip_data.ortsdaten.wgs84_area) {
|
var wgs_y = parseFloat(waip_json.ortsdaten.wgs84_y);
|
||||||
var wgs_x = parseFloat(waip_data.ortsdaten.wgs84_x);
|
var point = turf.point([wgs_y, wgs_x]);
|
||||||
var wgs_y = parseFloat(waip_data.ortsdaten.wgs84_y);
|
var buffered = turf.buffer(point, 1, {
|
||||||
var point = turf.point([wgs_y, wgs_x]);
|
steps: app_cfg.global.circumcircle,
|
||||||
var buffered = turf.buffer(point, 1, {
|
units: 'kilometers'
|
||||||
steps: app_cfg.global.circumcircle,
|
|
||||||
units: 'kilometers'
|
|
||||||
});
|
|
||||||
var bbox = turf.bbox(buffered);
|
|
||||||
var new_point = turf.randomPoint(1, {
|
|
||||||
bbox: bbox
|
|
||||||
});
|
|
||||||
var new_buffer = turf.buffer(new_point, 1, {
|
|
||||||
steps: app_cfg.global.circumcircle,
|
|
||||||
units: 'kilometers'
|
|
||||||
})
|
|
||||||
waip_data.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) {
|
|
||||||
if (waip_uuid) {
|
|
||||||
// wenn ein Einsatz mit UUID schon vorhanden ist, dann diese setzten / ueberschreiben
|
|
||||||
waip_data.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();
|
|
||||||
};
|
|
||||||
};
|
|
||||||
// nicht erwuenschte Daten ggf. enfernen (Datenschutzoption)
|
|
||||||
filter_api_data(waip_data, 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);
|
|
||||||
});
|
});
|
||||||
} else {
|
var bbox = turf.bbox(buffered);
|
||||||
sql.db_log('WAIP', 'Fehler: Einsatz von ' + remote_addr + ' nicht valide: ' + JSON.stringify(waip_data));
|
var new_point = turf.randomPoint(1, {
|
||||||
|
bbox: bbox
|
||||||
|
});
|
||||||
|
var new_buffer = turf.buffer(new_point, 1, {
|
||||||
|
steps: app_cfg.global.circumcircle,
|
||||||
|
units: 'kilometers'
|
||||||
|
})
|
||||||
|
waip_json.ortsdaten.wgs84_area = new_buffer;
|
||||||
};
|
};
|
||||||
});
|
// pruefen, ob vielleicht schon ein Einsatz mit einer UUID gespeichert ist
|
||||||
} else {
|
sql.db_einsatz_get_uuid_by_enr(waip_json.einsatzdaten.nummer, function (waip_uuid) {
|
||||||
sql.db_log('WAIP', 'Fehler: Einsatz von ' + remote_addr + ' Fehlerhaft: ' + JSON.stringify(waip_data));
|
if (waip_uuid) {
|
||||||
};
|
// wenn ein Einsatz mit UUID schon vorhanden ist, dann diese setzten / ueberschreiben
|
||||||
|
waip_json.einsatzdaten.uuid = waip_uuid;
|
||||||
|
} else {
|
||||||
|
// uuid erzeugen und zuweisen falls nicht bereits in JSON vorhanden, oder falls keine korrekte uuid
|
||||||
|
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_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_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));
|
||||||
|
};
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function save_new_rmld(data, remote_addr, app_id, callback) {
|
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) {
|
function validate_waip(data, callback) {
|
||||||
// TODO Validierung: Einsatzdaten auf Validität prüfen
|
// TODO Validierung: Einsatzdaten auf Validität prüfen
|
||||||
|
|
||||||
// Log
|
// Typ ist NULL
|
||||||
if (app_cfg.global.development) {
|
if (data === null) {
|
||||||
console.log('Validierung WAIP: ' + JSON.stringify(data));
|
callback && callback(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
callback && callback(true);
|
// Typ ist undefined
|
||||||
// SQL-Log
|
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) {
|
function validate_rmld(data, callback) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user