update Sa 13. Jun 23:31:01 CEST 2020

This commit is contained in:
Robert Richter 2020-06-13 23:31:01 +02:00
parent 5b28c875c8
commit 7392b1c46b
5 changed files with 171 additions and 30 deletions

145
package-lock.json generated
View File

@ -1382,6 +1382,11 @@
} }
} }
}, },
"addressparser": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz",
"integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y="
},
"after": { "after": {
"version": "0.8.2", "version": "0.8.2",
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
@ -1606,6 +1611,36 @@
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
}, },
"buildmail": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.10.0.tgz",
"integrity": "sha1-xoJtcW55RbtvaxQ0tTmF4CmgMVk=",
"requires": {
"addressparser": "1.0.1",
"libbase64": "0.1.0",
"libmime": "2.1.0",
"libqp": "1.1.0",
"nodemailer-fetch": "1.6.0",
"nodemailer-shared": "1.1.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
"integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI="
},
"libmime": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.0.tgz",
"integrity": "sha1-Ubx23iKDFh65BRxLyArtcT5P0c0=",
"requires": {
"iconv-lite": "0.4.13",
"libbase64": "0.1.0",
"libqp": "1.1.0"
}
}
}
},
"bytes": { "bytes": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@ -1934,6 +1969,14 @@
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
}, },
"dkim-signer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dkim-signer/-/dkim-signer-0.2.2.tgz",
"integrity": "sha1-qoHsBx7u02IngbqpIgRNeADl8wg=",
"requires": {
"libmime": "^2.0.3"
}
},
"doctypes": { "doctypes": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
@ -2584,6 +2627,28 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
}, },
"json2csv": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.1.tgz",
"integrity": "sha512-QFMifUX1y8W2tKi2TwZpnzf2rHdZvzdmgZUMEMDF46F90f4a9mUeWfx/qg4kzXSZYJYc3cWA5O+eLXk5lj9g8g==",
"requires": {
"commander": "^5.0.0",
"jsonparse": "^1.3.1",
"lodash.get": "^4.4.2"
},
"dependencies": {
"commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="
}
}
},
"jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
},
"jsonwebtoken": { "jsonwebtoken": {
"version": "8.5.1", "version": "8.5.1",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
@ -2653,6 +2718,33 @@
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
}, },
"libbase64": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz",
"integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY="
},
"libmime": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.3.tgz",
"integrity": "sha1-JQF8pataHpiq2+JyUBfPHUikKgw=",
"requires": {
"iconv-lite": "0.4.15",
"libbase64": "0.1.0",
"libqp": "1.1.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
"integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es="
}
}
},
"libqp": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz",
"integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g="
},
"lineclip": { "lineclip": {
"version": "1.1.5", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz", "resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz",
@ -2663,6 +2755,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
}, },
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
},
"lodash.includes": { "lodash.includes": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
@ -2703,6 +2800,32 @@
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
}, },
"mailcomposer": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.12.0.tgz",
"integrity": "sha1-nF4RiKqOHGLsi4a9Q0aBArY56Pk=",
"requires": {
"buildmail": "3.10.0",
"libmime": "2.1.0"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
"integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI="
},
"libmime": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.0.tgz",
"integrity": "sha1-Ubx23iKDFh65BRxLyArtcT5P0c0=",
"requires": {
"iconv-lite": "0.4.13",
"libbase64": "0.1.0",
"libqp": "1.1.0"
}
}
}
},
"media-typer": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -2824,6 +2947,19 @@
"tar": "^4" "tar": "^4"
} }
}, },
"nodemailer-fetch": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz",
"integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q="
},
"nodemailer-shared": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz",
"integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=",
"requires": {
"nodemailer-fetch": "1.6.0"
}
},
"nopt": { "nopt": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
@ -6529,6 +6665,15 @@
} }
} }
}, },
"sendmail": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/sendmail/-/sendmail-1.6.1.tgz",
"integrity": "sha512-lIhvnjSi5e5jL8wA1GPP6j2QVlx6JOEfmdn0QIfmuJdmXYGmJ375kcOU0NSm/34J+nypm4sa1AXrYE5w3uNIIA==",
"requires": {
"dkim-signer": "0.2.2",
"mailcomposer": "3.12.0"
}
},
"serve-favicon": { "serve-favicon": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz",

View File

@ -2,6 +2,11 @@
"name": "waip-web", "name": "waip-web",
"version": "0.1.2", "version": "0.1.2",
"description": "Web-Version des Wachalarm-IP", "description": "Web-Version des Wachalarm-IP",
"repository": {
"type": "git",
"url": "https://github.com/Robert-112/Wachalarm-IP-Web.git"
},
"license": "Creative Commons Attribution Share Alike 4.0 International",
"scripts": { "scripts": {
"start": "node server.js" "start": "node server.js"
}, },
@ -15,6 +20,7 @@
"cookie-parser": "^1.4.4", "cookie-parser": "^1.4.4",
"express": "^4.17.1", "express": "^4.17.1",
"express-session": "^1.17.0", "express-session": "^1.17.0",
"json2csv": "^5.0.1",
"npm": "^6.13.4", "npm": "^6.13.4",
"passport": "^0.4.1", "passport": "^0.4.1",
"passport-ip": "^0.1.2", "passport-ip": "^0.1.2",
@ -23,6 +29,7 @@
"passport.socketio": "^3.7.0", "passport.socketio": "^3.7.0",
"pug": "^2.0.4", "pug": "^2.0.4",
"req-flash": "0.0.3", "req-flash": "0.0.3",
"sendmail": "^1.6.1",
"serve-favicon": "^2.5.0", "serve-favicon": "^2.5.0",
"socket.io": "^2.3.0", "socket.io": "^2.3.0",
"socket.io-client": "^2.3.0", "socket.io-client": "^2.3.0",

View File

@ -37,11 +37,11 @@ app.use(bodyParser.urlencoded({
// Scripte einbinden // Scripte einbinden
var sql_cfg = require('./server/sql_cfg')(fs, bcrypt, app_cfg); var sql_cfg = require('./server/sql_cfg')(fs, bcrypt, app_cfg);
var sql = require('./server/sql_qry')(sql_cfg, uuidv4, app_cfg); var sql = require('./server/sql_qry')(sql_cfg, uuidv4, app_cfg);
var api = require('./server/api')(sql_cfg, uuidv4, app_cfg);
var brk = require('./server/broker')(app_cfg, sql, uuidv4); var brk = require('./server/broker')(app_cfg, sql, uuidv4);
var proof = require('./server/proof')(app_cfg, sql); var proof = require('./server/proof')(app_cfg, sql);
var waip = require('./server/waip')(io, sql, fs, brk, async, app_cfg, api, proof); var waip = require('./server/waip')(io, sql, fs, brk, async, app_cfg, api, proof);
var socket = require('./server/socket')(io, sql, app_cfg, waip); var socket = require('./server/socket')(io, sql, app_cfg, waip);
var api = require('./server/api')(io, sql, app_cfg, waip);
var udp = require('./server/udp')(app_cfg, waip, sql); var udp = require('./server/udp')(app_cfg, waip, sql);
var auth = require('./server/auth')(app, app_cfg, sql_cfg, async, bcrypt, passport, io); var auth = require('./server/auth')(app, app_cfg, sql_cfg, async, bcrypt, passport, io);
var routes = require('./server/routing')(app, sql, uuidv4, app_cfg, passport, auth, waip, udp); var routes = require('./server/routing')(app, sql, uuidv4, app_cfg, passport, auth, waip, udp);

View File

@ -36,7 +36,7 @@ module.exports = function (io, sql, app_cfg, waip) {
var app_id = raw_data.app_id; var app_id = raw_data.app_id;
// nur speichern wenn app_id nicht eigenen globalen app_id entspricht // nur speichern wenn app_id nicht eigenen globalen app_id entspricht
if (app_id != app_cfg.global.app_id) { if (app_id != app_cfg.global.app_id) {
// nicht erwuenschte Daten ggf. enfernen // nicht erwuenschte Daten ggf. enfernen (Datenschutzoption)
filter_api_data(data, remote_ip, function (data_filtered) { filter_api_data(data, remote_ip, function (data_filtered) {
waip.waip_speichern(data_filtered, app_id); waip.waip_speichern(data_filtered, app_id);
sql.db_log('API', 'Neuer Wachalarm von ' + remote_ip + ': ' + data_filtered); sql.db_log('API', 'Neuer Wachalarm von ' + remote_ip + ': ' + data_filtered);
@ -128,8 +128,12 @@ module.exports = function (io, sql, app_cfg, waip) {
var app_id = raw_data.app_id; var app_id = raw_data.app_id;
// nur speichern wenn app_id nicht eigenen globalen app_id entspricht // nur speichern wenn app_id nicht eigenen globalen app_id entspricht
if (app_id != app_cfg.global.app_id) { if (app_id != app_cfg.global.app_id) {
waip.waip_speichern(data, app_id); // nicht erwuenschte Daten ggf. enfernen (Datenschutzoption)
sql.db_log('API', 'Neuer Wachalarm von ' + app_cfg.endpoint.host + ': ' + data); app_cfg.endpoint.host
filter_api_data(data, app_cfg.endpoint.host, function (data_filtered) {
waip.waip_speichern(data_filtered, app_id);
sql.db_log('API', 'Neuer Wachalarm von ' + app_cfg.endpoint.host + ': ' + data_filtered);
});
}; };
}); });
@ -183,44 +187,31 @@ module.exports = function (io, sql, app_cfg, waip) {
if (app_cfg.filter.enabled) { if (app_cfg.filter.enabled) {
// Filter nur anwenden wenn Einsatzdaten von bestimmten IP-Adressen kommen // Filter nur anwenden wenn Einsatzdaten von bestimmten IP-Adressen kommen
if (app_cfg.filter.on_message_from.includes(remote_ip)) { if (app_cfg.filter.on_message_from.includes(remote_ip)) {
var data_filtered = data;
// Schleife definieren // Schleife definieren
function loop_done(waip_id) { function loop_done(data_filtered) {
callback && callback(waip_id); callback && callback(data_filtered);
}; };
var itemsProcessed = 0; var itemsProcessed = 0;
// Einsatzmittel zum Einsatz speichern // nicht gewollte Daten entfernen
app_cfg.filter.remove_data.forEach(function (item, index, array) { app_cfg.filter.remove_data.forEach(function (item, index, array) {
data.einsatzdaten[item] = ''; data_filtered.einsatzdaten[item] = '';
data.ortsdaten[item] = ''; data_filtered.ortsdaten[item] = '';
// Schleife erhoehen // Schleife erhoehen
itemsProcessed++; itemsProcessed++;
if (itemsProcessed === array.length) { if (itemsProcessed === array.length) {
// Schleife beenden // Schleife beenden
loop_done(id); loop_done(data_filtered);
}; };
}); });
} else { } else {
callback && callback(data); callback && callback(data);
}; };
} else { } else {
callback && callback(data); callback && callback(data);
}; };
// nur speichern wenn Einsatztyp akzeptiert wird
if (app_cfg.filter.receive_missiontype.includes(data.einsatzdaten.art) || app_cfg.filter.receive_missiontype.length == 0) {
// nur speichern wenn app_id nicht eigenen globalen app_id entspricht
} else {
sql.db_log('API', 'Wachalarm von ' + remote_ip + ' abgelehnt. Einsatzart nicht erlaubt: ' + data.einsatzdaten.art);
};
}; };
return { return {
server_to_client_new_waip: server_to_client_new_waip, server_to_client_new_waip: server_to_client_new_waip,
server_to_client_new_rmld: server_to_client_new_rmld, server_to_client_new_rmld: server_to_client_new_rmld,

View File

@ -9,7 +9,7 @@ app_cfg.global = {
database: './database.sqlite3', database: './database.sqlite3',
soundpath: '/public/media/', soundpath: '/public/media/',
mediapath: '/media/', mediapath: '/media/',
time_to_delete_waip: 60, time_to_delete_waip: 25,
default_time_for_standby: 10, default_time_for_standby: 10,
circumcircle: 5, circumcircle: 5,
defaultuser: 'me', defaultuser: 'me',
@ -57,11 +57,9 @@ app_cfg.endpoint = {
// Schnittstellendaten von bestimmten Clients entfernen (Datenschutzoption) // Schnittstellendaten von bestimmten Clients entfernen (Datenschutzoption)
app_cfg.filter = { app_cfg.filter = {
// FIXME in api rausfiltern
enabled: true, enabled: true,
on_message_from: ['192.168.2.20', '192.168.2.30'], on_message_from: ['192.168.2.20', 'https://192.168.1.25:8090/api'],
remove_einsatzdaten: ['besonderheiten'], remove_data: ['besonderheiten', 'strasse', 'objekt', 'objektnr', 'wachfolge', 'wgs84_x', 'wgs84_y']
remove_ortsdaten: ['strasse', 'objekt', 'objektnr', 'wachfolge', 'wgs84_x', 'wgs84_y']
}; };
module.exports = app_cfg; module.exports = app_cfg;