Improved error handling
This commit is contained in:
parent
db9e99cc52
commit
97ebcd4527
@ -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
|
||||
|
||||
|
||||
25
hosts.js
25
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
8
index.js
8
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());
|
||||
});
|
||||
|
||||
111
tokens.js
111
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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user