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'
|
url_privacy: 'https://www.nix.nix/datenschutz'
|
||||||
};
|
};
|
||||||
|
|
||||||
// Daten von anderen Servern empfangen
|
// Daten von anderen Clients empfangen
|
||||||
app_cfg.api = {
|
app_cfg.api = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
secret: 'asdfwert1234567890#',
|
secret: 'asdfwert1234567890#',
|
||||||
access_list: ['192.168.2.20', '192.168.2.30'],
|
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']
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Daten an andere Server senden
|
// Daten an andere Server senden
|
||||||
app_cfg.endpoint = {
|
app_cfg.endpoint = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
host: 'https://192.168.1.25:8090/api',
|
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;
|
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
|
// Module laden
|
||||||
const twit = require('twit');
|
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) {
|
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({
|
if (list_data.vmlt_typ == 'twitter') {
|
||||||
consumer_key: vmtl_data.tw_consumer_key,
|
// wenn es sich um eine Twitter-Liste/Gruppe handelt, Account-Zugangsdaten ermitteln
|
||||||
consumer_secret: vmtl_data.tw_consumer_secret,
|
sql.db_vmtl_get_tw_account(list_data, function (vmtl_data) {
|
||||||
access_token: vmtl_data.tw_access_token_key,
|
|
||||||
access_token_secret: vmtl_data.tw_access_token_secret
|
|
||||||
})
|
|
||||||
|
|
||||||
var params = {
|
// vmtl_data: tw_screen_name, tw_consumer_key, tw_consumer_secret, tw_access_token_key, tw_access_token_secret, uuid, einsatzart, name_wache
|
||||||
screen_name: vmtl_data.tw_screen_name
|
if (app_cfg.global.development) {
|
||||||
};
|
console.log('Twitter-Account-Daten: ' + JSON.stringify(vmtl_data));
|
||||||
|
|
||||||
// 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
|
|
||||||
};
|
};
|
||||||
// mit List_id die Mitglieder der Liste auslesen
|
|
||||||
T.get('lists/members', member_params, function (error, members, response) {
|
if (vmtl_data) {
|
||||||
if (!error) {
|
|
||||||
if (app_cfg.global.development) {
|
var T = new twit({
|
||||||
console.log('Mitglieder der Twitter-Liste: ' + JSON.stringify(members));
|
consumer_key: vmtl_data.tw_consumer_key,
|
||||||
};
|
consumer_secret: vmtl_data.tw_consumer_secret,
|
||||||
// an jedes Mitglied der Liste eine Meldung senden
|
access_token: vmtl_data.tw_access_token_key,
|
||||||
var arrayLength = members.users.length;
|
access_token_secret: vmtl_data.tw_access_token_secret
|
||||||
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: ' +
|
var params = {
|
||||||
app_cfg.public.url + '/rmld/' + vmtl_data.uuid + '/' + uuidv4();
|
screen_name: vmtl_data.tw_screen_name
|
||||||
// Parameter der Mitteilung
|
};
|
||||||
var msg_params = {
|
|
||||||
event: {
|
// Twitter-Liste beschicken
|
||||||
type: "message_create",
|
T.get('lists/list', params, function (error, lists, response) {
|
||||||
message_create: {
|
if (!error) {
|
||||||
target: {
|
var list_obj = lists.filter(function (o) {
|
||||||
recipient_id: members.users[i].id
|
return o.name == vmtl_data.list;
|
||||||
},
|
});
|
||||||
message_data: {
|
var member_params = {
|
||||||
text: tw_text
|
list_id: list_obj[0].id_str,
|
||||||
}
|
count: 50
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
// Mitteilung senden
|
// mit List_id die Mitglieder der Liste auslesen
|
||||||
T.post('direct_messages/events/new', msg_params, function (error, members, response) {
|
T.get('lists/members', member_params, function (error, members, response) {
|
||||||
if (!error) {
|
if (!error) {
|
||||||
sql.db_log('VMTL', 'Einsatz-Link an ' + members.users[i].screen_name + ' gesendet.');
|
if (app_cfg.global.development) {
|
||||||
callback && callback(members);
|
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 {
|
} 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);
|
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 {
|
||||||
};
|
sql.db_log('VMTL', 'Zugangsdaten für Twitter-Account ' + vmtl_data.tw_screen_name + ' konnten nicht ermittelt werden.');
|
||||||
});
|
};
|
||||||
} else {
|
|
||||||
console.log(error);
|
});
|
||||||
sql.db_log('VMTL', 'Fehler beim lesen der Twitter-Liste: ' + error);
|
} else {
|
||||||
callback && callback(null);
|
// andere Listen/Gruppen/Schnittstellen koennten hier noch abgefragt werden
|
||||||
};
|
callback && callback(null);
|
||||||
});
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -2,7 +2,9 @@ module.exports = function (db, uuidv4, app_cfg) {
|
|||||||
|
|
||||||
// Module laden
|
// Module laden
|
||||||
const turf = require('@turf/turf');
|
const turf = require('@turf/turf');
|
||||||
const { v5: uuidv5 } = require('uuid');
|
const {
|
||||||
|
v5: uuidv5
|
||||||
|
} = require('uuid');
|
||||||
|
|
||||||
// SQL-Abfragen
|
// SQL-Abfragen
|
||||||
|
|
||||||
@ -150,7 +152,7 @@ module.exports = function (db, uuidv4, app_cfg) {
|
|||||||
// Einsatzdaten in kuzre UUID-Strings umwandeln, diese UUIDs werden dann verglichen
|
// Einsatzdaten in kuzre UUID-Strings umwandeln, diese UUIDs werden dann verglichen
|
||||||
var uuid_em_alarmiert = uuidv5(JSON.stringify(einsatzdaten.em_alarmiert), custom_namespace);
|
var uuid_em_alarmiert = uuidv5(JSON.stringify(einsatzdaten.em_alarmiert), custom_namespace);
|
||||||
delete einsatzdaten.em_alarmiert;
|
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;
|
delete einsatzdaten.em_weitere;
|
||||||
var uuid_einsatzdaten = uuidv5(JSON.stringify(einsatzdaten), custom_namespace);
|
var uuid_einsatzdaten = uuidv5(JSON.stringify(einsatzdaten), custom_namespace);
|
||||||
// Abfrage ob zu Socket und Waip-ID bereits History-Daten hinterlegt sind
|
// 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) {
|
function db_einsatz_get_by_waipid(waip_id, wachen_nr, user_id, callback) {
|
||||||
// Einsatzdaten entsprechend der WAIP-ID zusammentragen
|
// 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)) {
|
if (isNaN(waip_id) || isNaN(wachen_nr)) {
|
||||||
callback && callback(null);
|
callback && callback(null);
|
||||||
} else {
|
} else {
|
||||||
@ -344,8 +346,6 @@ module.exports = function (db, uuidv4, app_cfg) {
|
|||||||
db.run(`DELETE FROM waip_einsaetze WHERE id = ?`, [id]);
|
db.run(`DELETE FROM waip_einsaetze WHERE id = ?`, [id]);
|
||||||
// History loeschen
|
// History loeschen
|
||||||
db.run(`DELETE FROM waip_history WHERE waip_id = ?`, [id]);
|
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) {
|
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) {
|
function db_vmtl_get_list(waip_id, callback) {
|
||||||
// Pruefen ob fuer eine Wache im Einsatz ein Verteilerliste hinterlegt ist
|
// 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
|
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 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) {
|
where em.waip_einsaetze_ID = ?)`, [waip_id], function (err, liste) {
|
||||||
if (err == null && liste) {
|
if (err == null && liste) {
|
||||||
// Falls Liste für Wache hinterlegt, je nach Typ de
|
// waip_id zu Daten hinzufuegen
|
||||||
if () {
|
liste.waip_id = waip_id;
|
||||||
|
callback && callback(liste);
|
||||||
} 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);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
callback && callback(null);
|
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 {
|
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_fuer_wache: db_rmld_get_fuer_wache,
|
||||||
db_rmld_get_by_rmlduuid: db_rmld_get_by_rmlduuid,
|
db_rmld_get_by_rmlduuid: db_rmld_get_by_rmlduuid,
|
||||||
db_rmld_get_by_waipuuid: db_rmld_get_by_waipuuid,
|
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_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) {
|
sql.db_socket_get_by_room(waip.uuid, function (socket_ids) {
|
||||||
// Dashboards trennen, deren Einsatz geloescht wurde
|
// Dashboards trennen, deren Einsatz geloescht wurde
|
||||||
// TODO WAIP: testen der Dashboard-Trennen-Funktion
|
// TODO TEST: testen der Dashboard-Trennen-Funktion
|
||||||
if (socket_ids) {
|
if (socket_ids) {
|
||||||
socket_ids.forEach(function (row) {
|
socket_ids.forEach(function (row) {
|
||||||
var socket = io.of('/dbrd').connected[row.socket_id];
|
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
|
// Mail-Adressen fuer Wachen zu dieser Einsatz-ID ermitteln, siehe db_vmtl_get_list
|
||||||
// csv an diese Mail-Adressen per Mail senden
|
// csv an diese Mail-Adressen per Mail senden
|
||||||
// wenn app_cfg.global.mail_rmld is true
|
// wenn app_cfg.global.mail_rmld is true
|
||||||
|
db_rmld_loeschen(waip_uuid)
|
||||||
});
|
});
|
||||||
// Einsatz löschen
|
// Einsatz löschen
|
||||||
sql.db_einsatz_loeschen(waip.id);
|
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