Added file logging

This commit is contained in:
La Programmatrice Verde 2025-08-18 16:54:32 +02:00
parent 67df0ea9f6
commit 53f732baa6
6 changed files with 43 additions and 21 deletions

View File

@ -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. 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 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. 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: ## Per iniziare ad usare il programma:
1- Recarsi su https://app.netbird.io/team/users 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
Docker run: Docker run:
`docker run -p 3000:3000 -e BASE_TOKEN=<token> -e HOSTNAMES="<hostname1>;<hostname2>" test` `docker run -p 3000:3000 -e BASE_TOKEN=<token> -e HOSTNAMES="<hostname1>;<hostname2>" -v /var/log/NetBird-UptimeKuma.log:/var/log/NetBird-UptimeKuma.log test`
Per il Docker compose, vedere il file relativo. Per il Docker compose, vedere il file relativo.

View File

@ -8,3 +8,5 @@ services:
BASE_TOKEN: "" BASE_TOKEN: ""
HOSTNAMES: "" HOSTNAMES: ""
HOSTIDS: "" HOSTIDS: ""
volumes:
/var/log/NetBird-UptimeKuma.log:/var/log/NetBird-UptimeKuma.log

View File

@ -5,7 +5,7 @@ var monitorInterval;
async function Monitoring() { async function Monitoring() {
await initHostList(); await initHostList();
console.log(`[${shared.now}] \nInizio monitoring`); Log(`[${shared.now}] \nInizio monitoring`);
//monitora tutti gli host della lista //monitora tutti gli host della lista
shared.eventEmitter.on("tokenRenewalStart", () => { shared.eventEmitter.on("tokenRenewalStart", () => {
clearInterval(monitorInterval); 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; return response.data.connected;
} }
@ -69,7 +69,7 @@ async function initHostList() {
hostIDs.push(host.id); hostIDs.push(host.id);
}); });
} catch (error) { } catch (error) {
console.log( Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
); );
process.exit(3); process.exit(3);
@ -88,7 +88,7 @@ async function initHostList() {
); );
hostIDs.push(response.data[0].id); hostIDs.push(response.data[0].id);
} catch (error) { } catch (error) {
console.log( Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
); );
process.exit(3); process.exit(3);
@ -115,7 +115,7 @@ async function initHostList() {
); );
hostIDs.push(response.data.id); hostIDs.push(response.data.id);
} catch (error) { } catch (error) {
console.log( Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
); );
process.exit(3); process.exit(3);
@ -134,7 +134,7 @@ async function initHostList() {
); );
hostIDs.push(response.data.id); hostIDs.push(response.data.id);
} catch (error) { } catch (error) {
console.log( Log(
`[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}` `[${shared.now}] Errore nella verifica e aggiunta al monitoraggio di un host: ${error}`
); );
process.exit(3); process.exit(3);
@ -142,7 +142,7 @@ async function initHostList() {
} }
} }
} else { } else {
console.log( Log(
`[${shared.now}] Nessun peer specificato, verranno monitorati tutti i peer disponibili` `[${shared.now}] Nessun peer specificato, verranno monitorati tutti i peer disponibili`
); );
try { try {
@ -156,13 +156,13 @@ async function initHostList() {
hostIDs.push(element.id); hostIDs.push(element.id);
}); });
} catch (error) { } 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) => { hostIDs.forEach((element) => {
console.log(`[${shared.now}] ${element}`); Log(`[${shared.now}] ${element}`);
}); });
} }

View File

@ -1,5 +1,6 @@
const { Monitoring } = require("./hosts.js"); const { Monitoring } = require("./hosts.js");
const { TokenRenew } = require("./tokens.js"); const { TokenRenew } = require("./tokens.js");
const { Log } = require("./logs.js");
const EventEmitter = require("node:events"); const EventEmitter = require("node:events");
const shared = require("./shared.js"); const shared = require("./shared.js");
const express = require("express"); const express = require("express");
@ -15,20 +16,20 @@ global.hour = minute * 60;
global.day = hour * 24; global.day = hour * 24;
app.listen(port, () => { 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) { 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)) { if (/^nbp_[a-z0-9A-Z]{36}$/.test(baseToken)) {
Monitoring(); Monitoring();
TokenRenew(); TokenRenew();
} else { } else {
console.log(`[${shared.now}] Il token inserito non è valido.`); Log(`[${shared.now}] Il token inserito non è valido.`);
process.exit(2); process.exit(2);
} }
} else { } else {
console.log(`[${shared.now}] Nessun token inserito.`); Log(`[${shared.now}] Nessun token inserito.`);
process.exit(1); process.exit(1);
} }

18
logs.js Normal file
View File

@ -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 };

View File

@ -21,7 +21,7 @@ async function TokenRenew() {
await deleteToken(tokenID); await deleteToken(tokenID);
shared.eventEmitter.emit("tokenRenewalEnd"); shared.eventEmitter.emit("tokenRenewalEnd");
} catch (error) { } catch (error) {
console.error(`[${shared.now}] Errore nel rinnovo del token: ${error}`); Log(`[${shared.now}] Errore nel rinnovo del token: ${error}`);
} }
}, day - hour); }, day - hour);
} }
@ -33,7 +33,7 @@ async function getUserID() {
Authorization: `Token ${shared.getToken()}`, Authorization: `Token ${shared.getToken()}`,
}, },
}); });
console.log(`[${shared.now}] UserID: ${response.data.id}`); Log(`[${shared.now}] UserID: ${response.data.id}`);
return 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() { async function getCurrentTokenID() {
@ -63,7 +63,7 @@ async function getCurrentTokenID() {
const token = response.data.find((t) => t.name === "Uptime Kuma"); const token = response.data.find((t) => t.name === "Uptime Kuma");
if (!token) throw new Error("Token 'Uptime Kuma' non trovato"); 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; 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; return response.data.plain_token;
} }