From 49a666ce34362edf53f0e7dec6b9d8523e7ad29d Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Thu, 25 Mar 2021 02:19:10 +0100 Subject: [PATCH] multiconfig version update --- README.md | 9 ++++ config/config.json | 9 ++++ .../fromlog/datadefinitions/filelogic.js | 0 fromlog.counter | 0 fromlog.file | 0 index.js | 43 +++++++++++++++---- fromlog.js => plugins/fromlog/index.js | 27 ++++++++---- 7 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 README.md create mode 100644 config/config.json rename fromlog.datadefinition => config/fromlog/datadefinitions/filelogic.js (100%) delete mode 100644 fromlog.counter delete mode 100644 fromlog.file rename fromlog.js => plugins/fromlog/index.js (71%) diff --git a/README.md b/README.md new file mode 100644 index 0000000..7cf4687 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +set config file in config/config.json + +for fromlog config + logs go in config/fromlog/logs + datadefinitions in config/fromlogs/datadefintions + +program save own data in program-data folder + +launch with: node index.js in root folder \ No newline at end of file diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..71ce49d --- /dev/null +++ b/config/config.json @@ -0,0 +1,9 @@ +[ + { + "modifier":"fromlog", + "file":"file", + "logic":"filelogic.js", + "port":80, + "idle":10000 + } +] diff --git a/fromlog.datadefinition b/config/fromlog/datadefinitions/filelogic.js similarity index 100% rename from fromlog.datadefinition rename to config/fromlog/datadefinitions/filelogic.js diff --git a/fromlog.counter b/fromlog.counter deleted file mode 100644 index e69de29..0000000 diff --git a/fromlog.file b/fromlog.file deleted file mode 100644 index e69de29..0000000 diff --git a/index.js b/index.js index 34ed472..65145c3 100644 --- a/index.js +++ b/index.js @@ -1,12 +1,39 @@ var http = require('http'); -var modifier = process.env.MODIFIER; -if (modifier){ - modifier = require("./" + modifier ); - modifier.init(); +var path = require('path'); +var configs = require("./config/config.json"); + +configs.forEach(function(config){ + var modifier= config.modifier; + if (modifier=="fromlog"){ + var file = config.file; + var logic = config.logic; + var port = config.port; + var idle = config.idle; + if (isNaN(idle)){ + idle = 10000; + } + try{ + fromlog(file,logic,port,idle); + console.log("Launched configuration:" + modifier + ";" + file); + } catch (error) { + console.log("Error launching configuration:" + modifier + ";" + file+ ";Error:" + error); + } + } +}); + + +function fromlog(file,logic,port,idle){ + delete require.cache[require.resolve("./plugins/fromlog/index.js")]; + var modifierexec = require("./plugins/fromlog/index.js"); + modifierexec.init(file,logic,idle); + createserver(modifierexec,port); +} + +function createserver (modifierexec,port){ http.createServer(function(req,res){ res.writeHead(200,{"Content-Type": "text/plain"}); - var data = modifier.data(); + var data = modifierexec.data(); var body = ""; var globallabelstring = ""; if (data.__labels){ @@ -55,8 +82,8 @@ if (modifier){ } } res.end(body); - }).listen(80); -} else { - console.log("No modifier selected"); + }).listen(port); } + + diff --git a/fromlog.js b/plugins/fromlog/index.js similarity index 71% rename from fromlog.js rename to plugins/fromlog/index.js index 12ad5da..385d7af 100644 --- a/fromlog.js +++ b/plugins/fromlog/index.js @@ -1,14 +1,24 @@ -var datadefinition = require("./fromlog.datadefinition" ); +var path = require('path'); +var datadefinition; +var filepath; +var counterpath; var data = {}; var fs = require('fs'), bite_size = 4096, - save_interval_or_retry = 10000, + save_interval_or_retry, filereadbytes, tempdata = "", fd; -function init(){ - fs.readFile('fromlog.counter',function(err, content){ +function init(file,logic,idle){ + delete require.cache[require.resolve('../../config/fromlog/datadefinitions/' + logic)]; + datadefinition = require('../../config/fromlog/datadefinitions/' + logic); + + save_interval_or_retry = idle; + + filepath = path.resolve(__dirname, '../../config/fromlog/logs/' + file); + + fs.readFile(filepath,function(err, content){ if (err){ filereadbytes = 0; }else{ @@ -20,7 +30,8 @@ function init(){ var oldfilereadbytes = filereadbytes; setInterval(function(){ if (filereadbytes != oldfilereadbytes){ - fs.writeFile("fromlog.counter", filereadbytes.toString(),function(err){}); + counterpath = path.resolve(__dirname, '../../program-data/fromlog/counters/' + file); + fs.writeFile(counterpath, filereadbytes.toString(),function(err){}); oldfilereadbytes = filereadbytes; } }, save_interval_or_retry); @@ -30,7 +41,7 @@ function init(){ function openandreadsome(){ - fs.open('fromlog.file', 'r',function(err, file){ + fs.open(filepath, 'r',function(err, file){ if (err){ return setTimeout(openandreadsome, save_interval_or_retry); } @@ -84,8 +95,8 @@ function processsome(actualbytesread, buff) { module.exports = { - init: function () { - init(); + init: function (file,logic,idle) { + init(file,logic,idle); data= datadefinition.init(data); }, data: function () {