update Do 11. Jun 17:31:01 CEST 2020
This commit is contained in:
parent
1daa8a4d98
commit
930f7baa85
@ -37,20 +37,21 @@ app_cfg.public = {
|
||||
url_privacy: 'https://www.nix.nix/datenschutz'
|
||||
};
|
||||
|
||||
// Daten von anderen Servern empfangen
|
||||
// Daten von anderen Clients empfangen
|
||||
app_cfg.api = {
|
||||
enabled: true,
|
||||
secret: 'asdfwert1234567890#',
|
||||
access_list: ['192.168.2.20', '192.168.2.30'],
|
||||
send_mission_type: ['Brandeinsatz', 'Hilfeleistung'],
|
||||
send_data_type: ['uuid', 'nummer', 'alarmzeit', 'art', 'stichwort', 'sondersignal', 'ort', 'ortsteil', 'wgs84_area']
|
||||
access_list: ['192.168.2.20', '192.168.2.30']
|
||||
};
|
||||
|
||||
// Daten an andere Server senden
|
||||
app_cfg.endpoint = {
|
||||
enabled: true,
|
||||
host: 'https://192.168.1.25:8090/api',
|
||||
secret: 'asdfwert1234567890#'
|
||||
secret: 'asdfwert1234567890#',
|
||||
// TODO in api rausfiltern
|
||||
get_mission_type: ['Brandeinsatz', 'Hilfeleistung'],
|
||||
get_data_type: ['uuid', 'nummer', 'alarmzeit', 'art', 'stichwort', 'sondersignal', 'ort', 'ortsteil', 'wgs84_area']
|
||||
};
|
||||
|
||||
module.exports = app_cfg;
|
||||
148
server/broker.js
148
server/broker.js
@ -3,82 +3,104 @@ module.exports = function (app_cfg, sql, uuidv4) {
|
||||
// Module laden
|
||||
const twit = require('twit');
|
||||
|
||||
function alert_vmtl_list(vmtl_data, callback) {
|
||||
function alert_vmtl_list(list_data, callback) {
|
||||
|
||||
// vmtl_data: tw.tw_screen_name, tw_consumer_key, tw.tw_consumer_secret, tw.tw_access_token_key, tw.tw_access_token_secret, we.uuid, we.einsatzart, wa.name_wache
|
||||
// waip_wachen_id, vmlt_typ, vmlt_account_name, vmtl_account_group, waip_id
|
||||
if (app_cfg.global.development) {
|
||||
console.log('Daten Vermittlung: ' + JSON.stringify(vmtl_data));
|
||||
console.log('Liste Vermittlung: ' + JSON.stringify(list_data));
|
||||
};
|
||||
|
||||
var T = new twit({
|
||||
consumer_key: vmtl_data.tw_consumer_key,
|
||||
consumer_secret: vmtl_data.tw_consumer_secret,
|
||||
access_token: vmtl_data.tw_access_token_key,
|
||||
access_token_secret: vmtl_data.tw_access_token_secret
|
||||
})
|
||||
if (list_data.vmlt_typ == 'twitter') {
|
||||
// wenn es sich um eine Twitter-Liste/Gruppe handelt, Account-Zugangsdaten ermitteln
|
||||
sql.db_vmtl_get_tw_account(list_data, function (vmtl_data) {
|
||||
|
||||
var params = {
|
||||
screen_name: vmtl_data.tw_screen_name
|
||||
};
|
||||
|
||||
// Twitter-Liste beschicken
|
||||
T.get('lists/list', params, function (error, lists, response) {
|
||||
if (!error) {
|
||||
var list_obj = lists.filter(function (o) {
|
||||
return o.name == vmtl_data.list;
|
||||
});
|
||||
var member_params = {
|
||||
list_id: list_obj[0].id_str,
|
||||
count: 50
|
||||
// vmtl_data: tw_screen_name, tw_consumer_key, tw_consumer_secret, tw_access_token_key, tw_access_token_secret, uuid, einsatzart, name_wache
|
||||
if (app_cfg.global.development) {
|
||||
console.log('Twitter-Account-Daten: ' + JSON.stringify(vmtl_data));
|
||||
};
|
||||
// mit List_id die Mitglieder der Liste auslesen
|
||||
T.get('lists/members', member_params, function (error, members, response) {
|
||||
if (!error) {
|
||||
if (app_cfg.global.development) {
|
||||
console.log('Mitglieder der Twitter-Liste: ' + JSON.stringify(members));
|
||||
};
|
||||
// an jedes Mitglied der Liste eine Meldung senden
|
||||
var arrayLength = members.users.length;
|
||||
for (var i = 0; i < arrayLength; i++) {
|
||||
// Mitteilungstext festelgen
|
||||
var tw_text = String.fromCodePoint(0x1F4DF) + ' ' + vmtl_data.einsatzart + ' für ' + vmtl_data.name_wache + ', bitte um Rückmeldung: ' +
|
||||
app_cfg.public.url + '/rmld/' + vmtl_data.uuid + '/' + uuidv4();
|
||||
// Parameter der Mitteilung
|
||||
var msg_params = {
|
||||
event: {
|
||||
type: "message_create",
|
||||
message_create: {
|
||||
target: {
|
||||
recipient_id: members.users[i].id
|
||||
},
|
||||
message_data: {
|
||||
text: tw_text
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vmtl_data) {
|
||||
|
||||
var T = new twit({
|
||||
consumer_key: vmtl_data.tw_consumer_key,
|
||||
consumer_secret: vmtl_data.tw_consumer_secret,
|
||||
access_token: vmtl_data.tw_access_token_key,
|
||||
access_token_secret: vmtl_data.tw_access_token_secret
|
||||
})
|
||||
|
||||
var params = {
|
||||
screen_name: vmtl_data.tw_screen_name
|
||||
};
|
||||
|
||||
// Twitter-Liste beschicken
|
||||
T.get('lists/list', params, function (error, lists, response) {
|
||||
if (!error) {
|
||||
var list_obj = lists.filter(function (o) {
|
||||
return o.name == vmtl_data.list;
|
||||
});
|
||||
var member_params = {
|
||||
list_id: list_obj[0].id_str,
|
||||
count: 50
|
||||
};
|
||||
// Mitteilung senden
|
||||
T.post('direct_messages/events/new', msg_params, function (error, members, response) {
|
||||
// mit List_id die Mitglieder der Liste auslesen
|
||||
T.get('lists/members', member_params, function (error, members, response) {
|
||||
if (!error) {
|
||||
sql.db_log('VMTL', 'Einsatz-Link an ' + members.users[i].screen_name + ' gesendet.');
|
||||
callback && callback(members);
|
||||
if (app_cfg.global.development) {
|
||||
console.log('Mitglieder der Twitter-Liste: ' + JSON.stringify(members));
|
||||
};
|
||||
// an jedes Mitglied der Liste eine Meldung senden
|
||||
var arrayLength = members.users.length;
|
||||
for (var i = 0; i < arrayLength; i++) {
|
||||
// Mitteilungstext festelgen
|
||||
var tw_text = String.fromCodePoint(0x1F4DF) + ' ' + vmtl_data.einsatzart + ' für ' + vmtl_data.name_wache + ', bitte um Rückmeldung: ' +
|
||||
app_cfg.public.url + '/rmld/' + vmtl_data.uuid + '/' + uuidv4();
|
||||
// Parameter der Mitteilung
|
||||
var msg_params = {
|
||||
event: {
|
||||
type: "message_create",
|
||||
message_create: {
|
||||
target: {
|
||||
recipient_id: members.users[i].id
|
||||
},
|
||||
message_data: {
|
||||
text: tw_text
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
// Mitteilung senden
|
||||
T.post('direct_messages/events/new', msg_params, function (error, members, response) {
|
||||
if (!error) {
|
||||
sql.db_log('VMTL', 'Einsatz-Link an ' + members.users[i].screen_name + ' gesendet.');
|
||||
callback && callback(members);
|
||||
} else {
|
||||
sql.db_log('VMTL', 'Fehler beim senden des Einsatz-Links an ' + members.users[i].screen_name + ': ' + error);
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
};
|
||||
} else {
|
||||
sql.db_log('VMTL', 'Fehler beim senden des Einsatz-Links an ' + members.users[i].screen_name + ': ' + error);
|
||||
sql.db_log('VMTL', 'Fehler beim lesen der Mitglieder der Twitter-Liste: ' + error);
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
} else {
|
||||
console.log(error);
|
||||
sql.db_log('VMTL', 'Fehler beim lesen der Twitter-Liste: ' + error);
|
||||
callback && callback(null);
|
||||
};
|
||||
} else {
|
||||
sql.db_log('VMTL', 'Fehler beim lesen der Mitglieder der Twitter-Liste: ' + error);
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
} else {
|
||||
console.log(error);
|
||||
sql.db_log('VMTL', 'Fehler beim lesen der Twitter-Liste: ' + error);
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
sql.db_log('VMTL', 'Zugangsdaten für Twitter-Account ' + vmtl_data.tw_screen_name + ' konnten nicht ermittelt werden.');
|
||||
};
|
||||
|
||||
});
|
||||
} else {
|
||||
// andere Listen/Gruppen/Schnittstellen koennten hier noch abgefragt werden
|
||||
callback && callback(null);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@ -2,7 +2,9 @@ module.exports = function (db, uuidv4, app_cfg) {
|
||||
|
||||
// Module laden
|
||||
const turf = require('@turf/turf');
|
||||
const { v5: uuidv5 } = require('uuid');
|
||||
const {
|
||||
v5: uuidv5
|
||||
} = require('uuid');
|
||||
|
||||
// SQL-Abfragen
|
||||
|
||||
@ -146,11 +148,11 @@ module.exports = function (db, uuidv4, app_cfg) {
|
||||
|
||||
function db_einsatz_check_history(waip_id, einsatzdaten, socket_id, callback) {
|
||||
// Prüfen ob Wachalarm bereits in dieser Form an diesen Socket gesendet wurde (Doppelalarmierung vermeiden)
|
||||
const custom_namespace = '59cc72ec-4ff5-499d-81e2-ec49c1d01252'
|
||||
const custom_namespace = '59cc72ec-4ff5-499d-81e2-ec49c1d01252'
|
||||
// Einsatzdaten in kuzre UUID-Strings umwandeln, diese UUIDs werden dann verglichen
|
||||
var uuid_em_alarmiert = uuidv5(JSON.stringify(einsatzdaten.em_alarmiert), custom_namespace);
|
||||
delete einsatzdaten.em_alarmiert;
|
||||
var uuid_em_weitere = uuidv5(JSON.stringify(einsatzdaten.em_weitere), custom_namespace);
|
||||
var uuid_em_weitere = uuidv5(JSON.stringify(einsatzdaten.em_weitere), custom_namespace);
|
||||
delete einsatzdaten.em_weitere;
|
||||
var uuid_einsatzdaten = uuidv5(JSON.stringify(einsatzdaten), custom_namespace);
|
||||
// Abfrage ob zu Socket und Waip-ID bereits History-Daten hinterlegt sind
|
||||
@ -188,7 +190,7 @@ module.exports = function (db, uuidv4, app_cfg) {
|
||||
|
||||
function db_einsatz_get_by_waipid(waip_id, wachen_nr, user_id, callback) {
|
||||
// Einsatzdaten entsprechend der WAIP-ID zusammentragen
|
||||
// falls waip_id oder wachen_nur keine zahlen sind, abbruch
|
||||
// falls waip_id oder wachen_nur keine zahlen sind, Abbruch
|
||||
if (isNaN(waip_id) || isNaN(wachen_nr)) {
|
||||
callback && callback(null);
|
||||
} else {
|
||||
@ -344,8 +346,6 @@ module.exports = function (db, uuidv4, app_cfg) {
|
||||
db.run(`DELETE FROM waip_einsaetze WHERE id = ?`, [id]);
|
||||
// History loeschen
|
||||
db.run(`DELETE FROM waip_history WHERE waip_id = ?`, [id]);
|
||||
// Rueckmeldungen löschen
|
||||
db.run(`DELETE FROM waip_response WHERE waip_uuid = (select uuid from waip_einsaetze where id = ?)`, [id]);
|
||||
};
|
||||
|
||||
function db_wache_get_all(callback) {
|
||||
@ -817,45 +817,39 @@ module.exports = function (db, uuidv4, app_cfg) {
|
||||
});
|
||||
};
|
||||
|
||||
function db_rmld_loeschen(waip_uuid) {
|
||||
// Rueckmeldungen löschen
|
||||
db.run(`DELETE FROM waip_response WHERE waip_uuid = `, [waip_uuid]);
|
||||
};
|
||||
|
||||
function db_vmtl_get_list(waip_id, callback) {
|
||||
// Pruefen ob fuer eine Wache im Einsatz ein Verteilerliste hinterlegt ist
|
||||
db.get(`select v.waip_wachen_id, v.vmlt_typ, v.vmlt_account_name, v.vmtl_account_group from waip_vmtl v
|
||||
where v.waip_wachen_id = (select distinct w.id wachen_id from waip_wachen w left join waip_einsatzmittel em on em.wachenname = w.name_wache
|
||||
where em.waip_einsaetze_ID = ?)`, [waip_id], function (err, liste) {
|
||||
if (err == null && liste) {
|
||||
// Falls Liste für Wache hinterlegt, je nach Typ de
|
||||
if () {
|
||||
|
||||
} else {
|
||||
// andere Listen/Gruppen/Schnittstellen koennten hier noch abgefragt werden
|
||||
callback && callback(null);
|
||||
}
|
||||
// FIXME eee
|
||||
vmtl_typ TEXT,
|
||||
vmlt_account_name TEXT,
|
||||
vmlt_account_group TEXT
|
||||
|
||||
|
||||
// Falls Account und Liste hinterlegt sind, die Account-Zugangsdaten, Einsatz-UUID, Einsatzart und Wachenname auslesen
|
||||
db.get(`select tw.tw_screen_name, tw_consumer_key, tw.tw_consumer_secret, tw.tw_access_token_key, tw.tw_access_token_secret, we.uuid, we.einsatzart, wa.name_wache
|
||||
from waip_tw_accounts tw, waip_einsaetze we, waip_wachen wa
|
||||
where tw.id = ? AND we.id = ? AND wa.id = ?`, [twitter_liste.tw_account_id, waip_id, twitter_liste.waip_wachen_id], function (err, vmtl_daten) {
|
||||
if (err == null && vmtl_daten) {
|
||||
// Listen-Name zur Daten hinzufuegen
|
||||
vmtl_daten.list = twitter_liste.tw_account_list;
|
||||
callback && callback(vmtl_daten);
|
||||
} else {
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
// waip_id zu Daten hinzufuegen
|
||||
liste.waip_id = waip_id;
|
||||
callback && callback(liste);
|
||||
} else {
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
function db_vmtl_get_access_data(, callback) {
|
||||
|
||||
function db_vmtl_get_tw_account(list_data, callback) {
|
||||
// falls Liste für Wache hinterlegt, dann hier die Twitter-Account-Daten, Einsatz-UUID, Einsatzart und Wachenname auslesen
|
||||
db.get(`select tw.tw_screen_name, tw.tw_consumer_key, tw.tw_consumer_secret, tw.tw_access_token_key, tw.tw_access_token_secret, we.uuid, we.einsatzart, wa.name_wache
|
||||
from waip_tw_accounts tw, waip_einsaetze we, waip_wachen wa
|
||||
where tw.tw_screen_name = ? AND we.id = ? AND wa.id = ?`, [list_data.vmlt_account_name, list_data.waip_id, list_data.waip_wachen_id], function (err, vmtl_daten) {
|
||||
if (err == null && vmtl_daten) {
|
||||
// Listen-Name zu Daten hinzufuegen
|
||||
vmtl_daten.list = list_data.vmtl_account_group;
|
||||
callback && callback(vmtl_daten);
|
||||
} else {
|
||||
callback && callback(null);
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
@ -890,8 +884,9 @@ module.exports = function (db, uuidv4, app_cfg) {
|
||||
db_rmld_get_fuer_wache: db_rmld_get_fuer_wache,
|
||||
db_rmld_get_by_rmlduuid: db_rmld_get_by_rmlduuid,
|
||||
db_rmld_get_by_waipuuid: db_rmld_get_by_waipuuid,
|
||||
db_rmld_loeschen: db_rmld_loeschen,
|
||||
db_vmtl_get_list: db_vmtl_get_list,
|
||||
db_vmtl_get_access_data: db_vmtl_get_access_data
|
||||
db_vmtl_get_tw_account: db_vmtl_get_tw_account
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@ -374,7 +374,7 @@ module.exports = function (io, sql, brk, async, app_cfg, api, proof) {
|
||||
});
|
||||
sql.db_socket_get_by_room(waip.uuid, function (socket_ids) {
|
||||
// Dashboards trennen, deren Einsatz geloescht wurde
|
||||
// TODO WAIP: testen der Dashboard-Trennen-Funktion
|
||||
// TODO TEST: testen der Dashboard-Trennen-Funktion
|
||||
if (socket_ids) {
|
||||
socket_ids.forEach(function (row) {
|
||||
var socket = io.of('/dbrd').connected[row.socket_id];
|
||||
@ -400,11 +400,11 @@ module.exports = function (io, sql, brk, async, app_cfg, api, proof) {
|
||||
// Mail-Adressen fuer Wachen zu dieser Einsatz-ID ermitteln, siehe db_vmtl_get_list
|
||||
// csv an diese Mail-Adressen per Mail senden
|
||||
// wenn app_cfg.global.mail_rmld is true
|
||||
|
||||
db_rmld_loeschen(waip_uuid)
|
||||
});
|
||||
// Einsatz löschen
|
||||
sql.db_einsatz_loeschen(waip.id);
|
||||
sql.db_log('WAIP', 'Einsatz ' + waip.id + ' gelöscht.');
|
||||
sql.db_log('WAIP', 'Einsatz-Daten zu Einsatz ' + waip.id + ' gelöscht.');
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user