70 lines
2.1 KiB
JavaScript
Executable file
70 lines
2.1 KiB
JavaScript
Executable file
exports.id = 'nodesdb_change_check';
|
|
exports.title = 'Nodes DB change check';
|
|
exports.group = 'Worksys';
|
|
exports.color = '#888600';
|
|
exports.version = '1.0.2';
|
|
exports.icon = 'sign-out';
|
|
exports.input = 1;
|
|
exports.output = 1;
|
|
exports.readme = `Check, if nodes.table db changed compared to original database`;
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const { sendNotification } = require('./helper/notification_reporter');
|
|
const nodesOriginalFile = path.join(__dirname, '../databases/nodes_original/', 'nodes_original.table');
|
|
|
|
|
|
exports.install = function(instance) {
|
|
|
|
function compareArrays(array1, array2) {
|
|
let message = "";
|
|
let areEqual = true;
|
|
let zmenene = []
|
|
|
|
if (array1.length !== array2.length) {
|
|
message += "Nezhoda v pocte nodov. "
|
|
}
|
|
|
|
const set1 = new Set(array1.map(obj => JSON.stringify(obj)));
|
|
const set2 = new Set(array2.map(obj => JSON.stringify(obj)));
|
|
|
|
for (const objStr of set1) {
|
|
|
|
if (!set2.has(objStr)) {
|
|
zmenene.push(objStr)
|
|
areEqual = false;
|
|
} else {
|
|
set2.delete(objStr);
|
|
}
|
|
}
|
|
|
|
if(!areEqual) {
|
|
message += `Aktualne nody: ${zmenene.toString()}. Zmenene proti originalu: ${Array.from(set2).join(' ')}`;
|
|
sendNotification("Nodesdb_changecheck", FLOW.GLOBALS.settings.rvoTbName, "nodes_db_changed", "", message, 0, instance);
|
|
}
|
|
else console.log("Arrays are equal.");
|
|
|
|
console.log(message)
|
|
}
|
|
|
|
|
|
instance.on("data", _ => {
|
|
|
|
let nodesData = FLOW.GLOBALS.nodesData;
|
|
|
|
// we check if nodes.table has changed compared to nodes_original.table (we have array of nodes e.g. [{node:255, tbname: "agruhuwhgursuhgo34hgsdiguhrr"}]
|
|
const nodes_actual = Object.keys(nodesData).map(node => ({[node]: nodesData[node].tbname}))
|
|
let nodes_original = fs.readFileSync(nodesOriginalFile, { encoding: 'utf8', flag: 'r' });
|
|
|
|
try {
|
|
nodes_original = JSON.parse(nodes_original);
|
|
} catch(e) {
|
|
console.log(e)
|
|
}
|
|
|
|
|
|
setTimeout(() => compareArrays(nodes_actual, nodes_original),10000);
|
|
})
|
|
|
|
}
|
|
|