diff --git a/README.md b/README.md index 1ce03b3..dfecd1c 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,14 @@ Se vengono specificati degli hostname o degli ID non validi insieme a degli host Se nessuna delle due variabili vengono specificate, il programma monitorerà tutti i peer registrati. Il file di log è disponibile nella cartella di esecuzione in `./log/NetBird-UptimeKuma.log` +Il programma restituisce come codice di errore: + +`1` se non viene inserito nessun token + +`2` se viene inserito un token non valido + +`3` se si verifica un errore in una funzione di rete + ## Per iniziare ad usare il programma: 1- Recarsi su https://app.netbird.io/team/users diff --git a/hosts.js b/hosts.js index 83c7403..c5677b8 100644 --- a/hosts.js +++ b/hosts.js @@ -30,16 +30,22 @@ async function Request() { } async function isConnected(hostID) { - const response = await axios.get( - `https://api.netbird.io/api/peers/${hostID}`, - { - headers: { - Accept: "application/json", - Authorization: `Token ${shared.getToken()}`, - }, + try { + const response = await axios.get( + `https://api.netbird.io/api/peers/${hostID}`, + { + headers: { + Accept: "application/json", + Authorization: `Token ${shared.getToken()}`, + }, + } + ); + Log(`[${shared.now()}] ${hostID} connected: ${response.data.connected}`); + } + catch (error) { + Log(`[${shared.now()}] ${error}`); + process.exit(3); } - ); - Log(`[${shared.now()}] ${hostID} connected: ${response.data.connected}`); return response.data.connected; } @@ -158,6 +164,7 @@ async function initHostList() { }); } catch (error) { Log(`[${shared.now()}] ${error}`); + process.exit(3); } } diff --git a/index.js b/index.js index 78c3856..8d378d1 100644 --- a/index.js +++ b/index.js @@ -10,10 +10,14 @@ const eventEmitter = new EventEmitter(); shared.eventEmitter = eventEmitter; let baseToken = process.env.BASE_TOKEN; shared.setToken(baseToken); - +/* global.minute = 1000 * 60; global.hour = minute * 60; global.day = hour * 24; +*/ +global.minute = 1000; +global.hour = minute * 10; +global.day = hour * 3; app.listen(port, () => { Log(`[${shared.now()}] Il server è online sulla porta ${port}`); @@ -33,6 +37,6 @@ if ("BASE_TOKEN" in process.env) { process.exit(1); } -app.get("/", (req, res) => { +app.get("/", (_, res) => { res.json(shared.getHosts()); }); diff --git a/tokens.js b/tokens.js index 6576c2a..82b1101 100644 --- a/tokens.js +++ b/tokens.js @@ -7,7 +7,6 @@ let userID; async function TokenRenew() { setInterval(async () => { shared.eventEmitter.emit("tokenRenewalStart"); - try { // ottieni l'ID dell'utente associato al token userID = await getUserID(); @@ -21,69 +20,89 @@ async function TokenRenew() { // cancella il token precedente await deleteToken(tokenID); shared.eventEmitter.emit("tokenRenewalEnd"); - } catch (error) { - Log(`[${shared.now()}] Errore nel rinnovo del token: ${error}`); - } }, day - hour); } async function getUserID() { - const response = await axios.get("https://api.netbird.io/api/users/current", { - headers: { - Accept: "application/json", - Authorization: `Token ${shared.getToken()}`, - }, - }); - Log(`[${shared.now()}] UserID: ${response.data.id}`); + try { + const response = await axios.get( + "https://api.netbird.io/api/users/current", + { + headers: { + Accept: "application/json", + Authorization: `Token ${shared.getToken()}`, + }, + } + ); + Log(`[${shared.now()}] UserID: ${response.data.id}`); + } catch (error) { + Log(`[${shared.now()}] ${error}`); + process.exit(3); + } return response.data.id; } async function deleteToken(tokenID) { - await axios.delete( - `https://api.netbird.io/api/users/${userID}/tokens/${tokenID}`, - { - headers: { - Authorization: `Token ${shared.getToken()}`, - }, - } - ); - Log(`[${shared.now()}] Token con ID ${tokenID} cancellato con successo`); + try { + await axios.delete( + `https://api.netbird.io/api/users/${userID}/tokens/${tokenID}`, + { + headers: { + Authorization: `Token ${shared.getToken()}`, + }, + } + ); + Log(`[${shared.now()}] Token con ID ${tokenID} cancellato con successo`); + } catch (error) { + Log(`[${shared.now()}] ${error}`); + process.exit(3); + } } async function getCurrentTokenID() { - const response = await axios.get( - `https://api.netbird.io/api/users/${userID}/tokens`, - { - headers: { - Accept: "application/json", - Authorization: `Token ${shared.getToken()}`, - }, - } - ); + try { + const response = await axios.get( + `https://api.netbird.io/api/users/${userID}/tokens`, + { + headers: { + Accept: "application/json", + Authorization: `Token ${shared.getToken()}`, + }, + } + ); - const token = response.data.find((t) => t.name === "Uptime Kuma"); - if (!token) throw new Error("Token 'Uptime Kuma' non trovato"); + const token = response.data.find((t) => t.name === "Uptime Kuma"); + if (!token) throw new Error("Token 'Uptime Kuma' non trovato"); - Log(`[${shared.now()}] CurrentTokenID: ${token.id}`); + Log(`[${shared.now()}] CurrentTokenID: ${token.id}`); + } catch (error) { + Log(`[${shared.now()}] ${error}`); + process.exit(3); + } return token.id; } async function getNewToken() { - const response = await axios.post( - `https://api.netbird.io/api/users/${userID}/tokens`, - { - name: "Uptime Kuma", - expires_in: 2, - }, - { - headers: { - Accept: "application/json", - Authorization: `Token ${shared.getToken()}`, - "Content-Type": "application/json", + try { + const response = await axios.post( + `https://api.netbird.io/api/users/${userID}/tokens`, + { + name: "Uptime Kuma", + expires_in: 2, }, - } - ); - Log(`[${shared.now()}] Nuovo token creato: ${response.data.plain_token}`); + { + headers: { + Accept: "application/json", + Authorization: `Token ${shared.getToken()}`, + "Content-Type": "application/json", + }, + } + ); + Log(`[${shared.now()}] Nuovo token creato: ${response.data.plain_token}`); + } catch (error) { + Log(`[${shared.now()}] ${error}`); + process.exit(3); + } return response.data.plain_token; }