/**
*
* Handles incoming external ip information and persists them
* at the coredatabase.
*
* (c) Jens Dinstühler 2020
*
* Version 1.0.0
*
*
*/
const EventEmitter = require('events');
class CoreExternalIpHandler extends EventEmitter {
constructor() {
super();
}
/**
* Saves new ip address information into core database
* @param {string} ip
*/
persistNewIPInformation(ip) {
if ((typeof ip != 'undefined')) {
// check if entry for this ip exists
let checkSql = 'SELECT * FROM configuration WHERE keyword = "externalip"';
global.coreDb.all(checkSql, [], (err, rows) => {
if (err) {
global.plgManager.logger.error('CORE | HANDLEREXTERNALIP | Error checking for external ip: ' + err.message);
}
if (rows.length > 0) {
// Found existingh entry --> update record in database
if (rows[0].value != ip) {
// IP has changed --> update in database
global.coreDb.run(`UPDATE configuration SET value = ?, lastupdate = CURRENT_TIMESTAMP WHERE keyword = "externalip"`,
[
ip
],
function (err) {
if (err) {
global.plgManager.logger.error('CORE | HANDLEREXTERNALIP | Error inserting new external ip to coredatabase: ' + err.message);
console.log('CORE | HANDLEREXTERNALIP | Error inserting new ip to coredatabase: ' + err.message);
} else {
global.plgManager.logger.debug(`CORE | HANDLEREXTERNALIP | IP Info has been updated in coredatabase`);
//console.log(`CORE | HANDLEREXTERNALIP | IP Info has been updated in coredatabase`);
}
});
} else {
// IP has not changed against database value, do nothing
global.plgManager.logger.debug(`CORE | HANDLEREXTERNALIP | external ip has not changed, no update to database`);
//console.log(`CORE | HANDLEREXTERNALIP | external ip has not changed, no update to database`);
}
} else {
// No existing entry --> create one
global.coreDb.run(`INSERT INTO configuration (keyword, value) VALUES ("externalip", ?)`,
[
ip
],
function (err) {
if (err) {
global.plgManager.logger.error('CORE | HANDLEREXTERNALIP | Error inserting new external ip to coredatabase: ' + err.message);
console.log('CORE | HANDLEREXTERNALIP | Error inserting new ip to coredatabase: ' + err.message);
} else {
global.plgManager.logger.debug(`CORE | HANDLEREXTERNALIP | New ip Info has been inserted to coredatabase`);
//console.log(`CORE | HANDLEREXTERNALIP | New ip Info has been inserted to coredatabase`);
}
});
}
})
} else {
global.plgManager.logger.error('CORE | HANDLEREXTERNALIP | Error persisting external IP address');
}
}
}
module.exports = CoreExternalIpHandler;