# ZeroCentral

![ZeroCentral Banner](banner.jpg)

Dashboard per monitorare lo stato di tutti i nodi su una rete ZeroTier.

**Funzionalità:**
- Interroga l'API ZeroTier per ottenere la lista dei nodi
- Effettua ping periodico (ogni 10 secondi) a ogni nodo
- Mostra dashboard web con:
  - Hostname del nodo
  - Indirizzo IP ZeroTier
  - Stato online/offline (semaforo verde/rosso)
  - Ultimo time di verifica

## Setup

### 1. Copia il file di configurazione
```bash
cp .env.example .env
```

### 2. Configura il token ZeroTier
Modifica `.env` e aggiungi il tuo token ZeroTier:
```
ZEROTIER_TOKEN=tuoTokenQui
```

### 3. Installa dipendenze
```bash
python3 -m venv venv
source venv/bin/activate  # su Windows: venv\Scripts\activate
pip install -r requirements.txt
```

### 4. Avvia l'app
```bash
python3 app.py
```

L'app sarà disponibile su `http://localhost:5000`

## Come usare

1. Accedi a `http://localhost:5000`
![ZeroCentral dashboard](zerocentral.png)
2. Inserisci il **Network ID** della rete ZeroTier (16 caratteri)
3. Clicca "Connetti"
4. La dashboard inizierà a monitorare i nodi e aggiornerà lo stato ogni 5 secondi

## API Endpoints

- `GET /` - Dashboard web
- `GET /api/status` - Health check
- `GET /api/nodes?network_id=<id>` - Lista nodi con stato

## Architettura

```
Frontend (HTML/JS/CSS)
    ↓
Flask REST API
    ↓
Background Worker (threading)
    ├→ ZeroTier API Client
    └→ Ping Service (ogni 10s)
```

## Files

- `app.py` - Applicazione Flask principale
- `config.py` - Configurazione
- `zerotier_client.py` - Client per API ZeroTier
- `ping_service.py` - Servizio di ping periodico
- `templates/dashboard.html` - Dashboard web
- `static/style.css` - Styling
- `static/dashboard.js` - Logica frontend
