Dashboard web per la gestione di siti SD-WAN Cato Networks tramite le API GraphQL ufficiali.
Web dashboard for managing Cato Networks SD-WAN sites via the official GraphQL API.
- Creazione siti con wizard multi-step (info, rete nativa, VLANs, riepilogo)
- Lista siti esistenti con refresh real-time
- Gestione VLANs con DHCP configurabile per ogni VLAN
- Validazione CIDR, IP, range privati in real-time
- Supporto Socket fisici (X1500/X1600/X1700) e virtuali (AWS/Azure/GCP/ESXi)
- Site creation with multi-step wizard (info, native network, VLANs, summary)
- Site listing with real-time refresh
- VLAN management with configurable DHCP per VLAN
- Real-time validation for CIDR, IP, private ranges
- Socket support for physical (X1500/X1600/X1700) and virtual (AWS/Azure/GCP/ESXi)
Frontend (React + MUI + TypeScript) --> Nginx (:8080)
|
/api proxy
|
Backend (Express + GraphQL) --> Node (:3001)
|
Cato Networks API
(api.catonetworks.com/api/v1/graphql2)
- Docker + Docker Compose
- Cato Networks API Key (dal portale Cato Management Application)
- Cato Account ID
git clone https://github.com/mmereu/cato-webapp.git
cd cato-webappcp backend/.env.example backend/.envModifica backend/.env con le tue credenziali Cato:
Edit backend/.env with your Cato credentials:
CATO_API_KEY=your_api_key_here
CATO_ACCOUNT_ID=your_account_id
CATO_ENDPOINT=https://api.catonetworks.com/api/v1/graphql2
PORT=3001
NODE_ENV=production
CORS_ORIGINS=http://localhost:8080,http://localhostdocker compose up -d --buildL'app sara disponibile su http://localhost:8080.
The app will be available at http://localhost:8080.
Backend:
cd backend
npm install
npm run devFrontend:
cd frontend
npm install
npm run devIl frontend in dev usa il proxy Vite verso localhost:3001.
The frontend dev server proxies API calls to localhost:3001 via Vite.
| Method | Path | Descrizione |
|---|---|---|
| GET | /api/health |
Health check |
| GET | /api/sites |
Lista tutti i siti |
| POST | /api/sites |
Crea un sito base |
| POST | /api/sites/create-complete |
Crea sito + VLANs (orchestrato) |
| GET | /api/sites/:id/lan-interface |
Ottieni LAN interface ID |
| POST | /api/sites/:id/network-ranges |
Aggiungi VLAN/network range |
| GET | /api/locations |
Cerca location (paese, timezone) |
- Le credenziali API vanno SOLO nel file
.env(mai nel codice) - Il backend usa
helmetper gli header HTTP di sicurezza - Rate limiting: max 100 richieste per 15 minuti per IP
- CORS configurabile via variabile d'ambiente
- API credentials belong ONLY in the
.envfile (never in code) - Backend uses
helmetfor secure HTTP headers - Rate limiting: max 100 requests per 15 minutes per IP
- CORS configurable via environment variable
- Frontend: React 18, TypeScript, Material UI 5, Vite 5, Axios
- Backend: Node.js 20, Express 4, graphql-request
- Deploy: Docker, Nginx reverse proxy
- API: Cato Networks GraphQL API v1
MIT - vedi LICENSE