From 53f732baa6b95d45b4491852fd4f458231359d93 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Mon, 18 Aug 2025 16:54:32 +0200 Subject: [PATCH] Added file logging --- README.md | 3 ++- docker-compose.yml | 4 +++- hosts.js | 20 ++++++++++---------- index.js | 9 +++++---- logs.js | 18 ++++++++++++++++++ tokens.js | 10 +++++----- 6 files changed, 43 insertions(+), 21 deletions(-) create mode 100644 logs.js diff --git a/README.md b/README.md index 497767d..7068a28 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Le due variabili **non** possono essere usate nello stesso momento. Per inserire più di un peer nelle variabili d'ambiente, separarli con un `;`. Non inserire spazi o altri caratteri, solo i nomi/ID dei peer e `;` sono accettati. Se vengono specificati degli hostname o degli ID non validi insieme a degli hostname o degli ID validi, quelli non validi saranno ignorati. Se nessuna delle due variabili vengono specificate, il programma monitorerà tutti i peer registrati. +Il file di log è disponibile in `/var/log/NetBird-UptimeKuma.log` ## Per iniziare ad usare il programma: 1- Recarsi su https://app.netbird.io/team/users @@ -22,6 +23,6 @@ Se nessuna delle due variabili vengono specificate, il programma monitorerà tut ## Docker Docker run: -`docker run -p 3000:3000 -e BASE_TOKEN= -e HOSTNAMES=";" test` +`docker run -p 3000:3000 -e BASE_TOKEN= -e HOSTNAMES=";" -v /var/log/NetBird-UptimeKuma.log:/var/log/NetBird-UptimeKuma.log test` Per il Docker compose, vedere il file relativo. \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index b655fb4..d600729 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,4 +7,6 @@ services: environment: BASE_TOKEN: "" HOSTNAMES: "" - HOSTIDS: "" \ No newline at end of file + HOSTIDS: "" + volumes: + /var/log/NetBird-UptimeKuma.log:/var/log/NetBird-UptimeKuma.log \ No newline at end of file diff --git a/hosts.js b/hosts.js index 128b188..adfab35 100644 --- a/hosts.js +++ b/hosts.js @@ -5,7 +5,7 @@ var monitorInterval; async function Monitoring() { await initHostList(); - console.log(`[${shared.now}] \nInizio monitoring`); + Log(`[${shared.now}] \nInizio monitoring`); //monitora tutti gli host della lista shared.eventEmitter.on("tokenRenewalStart", () => { clearInterval(monitorInterval); @@ -38,7 +38,7 @@ async function isConnected(hostID) { }, } ); - console.log(`[${shared.now}] ${hostID} connected: ${response.data.connected}`); + Log(`[${shared.now}] ${hostID} connected: ${response.data.connected}`); return response.data.connected; } @@ -69,7 +69,7 @@ async function initHostList() { hostIDs.push(host.id); }); } catch (error) { - console.log( + Log( `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` ); process.exit(3); @@ -88,7 +88,7 @@ async function initHostList() { ); hostIDs.push(response.data[0].id); } catch (error) { - console.log( + Log( `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` ); process.exit(3); @@ -115,7 +115,7 @@ async function initHostList() { ); hostIDs.push(response.data.id); } catch (error) { - console.log( + Log( `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` ); process.exit(3); @@ -134,7 +134,7 @@ async function initHostList() { ); hostIDs.push(response.data.id); } catch (error) { - console.log( + Log( `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` ); process.exit(3); @@ -142,7 +142,7 @@ async function initHostList() { } } } else { - console.log( + Log( `[${shared.now}] Nessun peer specificato, verranno monitorati tutti i peer disponibili` ); try { @@ -156,13 +156,13 @@ async function initHostList() { hostIDs.push(element.id); }); } catch (error) { - console.log(`[${shared.now}] ${error}`); + Log(`[${shared.now}] ${error}`); } } - console.log(`[${shared.now}] ID rilevati:`); + Log(`[${shared.now}] ID rilevati:`); hostIDs.forEach((element) => { - console.log(`[${shared.now}] ${element}`); + Log(`[${shared.now}] ${element}`); }); } diff --git a/index.js b/index.js index 218af17..0a812fe 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,6 @@ const { Monitoring } = require("./hosts.js"); const { TokenRenew } = require("./tokens.js"); +const { Log } = require("./logs.js"); const EventEmitter = require("node:events"); const shared = require("./shared.js"); const express = require("express"); @@ -15,20 +16,20 @@ global.hour = minute * 60; global.day = hour * 24; app.listen(port, () => { - console.log(`[${shared.now}] Il server è online sulla porta ${port}`); + Log(`[${shared.now}] Il server è online sulla porta ${port}`); }); if ("BASE_TOKEN" in process.env) { - console.log(`[${shared.now}] Token inserito: ${baseToken}`); + Log(`[${shared.now}] Token inserito: ${baseToken}`); if (/^nbp_[a-z0-9A-Z]{36}$/.test(baseToken)) { Monitoring(); TokenRenew(); } else { - console.log(`[${shared.now}] Il token inserito non è valido.`); + Log(`[${shared.now}] Il token inserito non è valido.`); process.exit(2); } } else { - console.log(`[${shared.now}] Nessun token inserito.`); + Log(`[${shared.now}] Nessun token inserito.`); process.exit(1); } diff --git a/logs.js b/logs.js new file mode 100644 index 0000000..02811e3 --- /dev/null +++ b/logs.js @@ -0,0 +1,18 @@ +const fs = require("fs"); +const path = require("path"); +const shared = require("./shared.js"); +let logFile; + + logFile = path.join("/var/log", "NetBird-UptimeKuma.log"); +console.log(`[${shared.now}] File di log situato in /var/log/NetBird-UptimeKuma.log`); + +function writeToLog(message) { + fs.appendFileSync(logFile, `${message}\n`); +} + +function Log(message) { + console.log(message); + writeToLog(message); +} + +module.exports = { Log }; diff --git a/tokens.js b/tokens.js index 0b970b7..0cff347 100644 --- a/tokens.js +++ b/tokens.js @@ -21,7 +21,7 @@ async function TokenRenew() { await deleteToken(tokenID); shared.eventEmitter.emit("tokenRenewalEnd"); } catch (error) { - console.error(`[${shared.now}] Errore nel rinnovo del token: ${error}`); + Log(`[${shared.now}] Errore nel rinnovo del token: ${error}`); } }, day - hour); } @@ -33,7 +33,7 @@ async function getUserID() { Authorization: `Token ${shared.getToken()}`, }, }); - console.log(`[${shared.now}] UserID: ${response.data.id}`); + Log(`[${shared.now}] UserID: ${response.data.id}`); return response.data.id; } @@ -46,7 +46,7 @@ async function deleteToken(tokenID) { }, } ); - console.log(`[${shared.now}] Token con ID ${tokenID} cancellato con successo`); + Log(`[${shared.now}] Token con ID ${tokenID} cancellato con successo`); } async function getCurrentTokenID() { @@ -63,7 +63,7 @@ async function getCurrentTokenID() { const token = response.data.find((t) => t.name === "Uptime Kuma"); if (!token) throw new Error("Token 'Uptime Kuma' non trovato"); - console.log(`[${shared.now}] CurrentTokenID: ${token.id}`); + Log(`[${shared.now}] CurrentTokenID: ${token.id}`); return token.id; } @@ -82,7 +82,7 @@ async function getNewToken() { }, } ); - console.log(`[${shared.now}] Nuovo token creato: ${response.data.plain_token}`); + Log(`[${shared.now}] Nuovo token creato: ${response.data.plain_token}`); return response.data.plain_token; }