update So 21. Jun 22:31:01 CEST 2020
This commit is contained in:
parent
001d2379de
commit
211634bd7c
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user