# 📊 FonctionnalitĂ© de Suivi d'Équipements - IPWatch ## Vue d'ensemble Cette nouvelle fonctionnalitĂ© permet de suivre des Ă©quipements spĂ©cifiques du rĂ©seau avec des actions de gestion Ă  distance (Wake-on-LAN, arrĂȘt). ## Modifications apportĂ©es ### 🔧 Backend (FastAPI) #### 1. ModĂšle de donnĂ©es - **Fichier**: `backend/app/models/ip.py` - **Changement**: Ajout du champ `tracked` (Boolean) avec index dans la table `IP` #### 2. Nouveau router tracking - **Fichier**: `backend/app/routers/tracking.py` - **Endpoints**: - `GET /api/tracking/` - RĂ©cupĂšre toutes les IPs suivies - `POST /api/tracking/wol/{ip_address}` - Envoie un paquet Wake-on-LAN - `POST /api/tracking/shutdown/{ip_address}` - Éteint un Ă©quipement (Ă  implĂ©menter selon infrastructure) - `PATCH /api/tracking/{ip_address}/toggle` - Bascule l'Ă©tat tracked d'une IP #### 3. Migration de base de donnĂ©es - **Fichier**: `backend/app/migrations/add_tracked_field.py` - **Commande**: `python -m backend.app.migrations.add_tracked_field` - **Action**: Ajoute la colonne `tracked` et son index #### 4. DĂ©pendances - **Fichier**: `backend/requirements.txt` - **Ajout**: `wakeonlan==3.1.0` pour l'envoi de paquets Magic Packet ### 🎹 Frontend (Vue 3) #### 1. Routing - **Fichier**: `frontend/src/router/index.js` - **Routes**: - `/` - Page principale (MainView) - `/tracking` - Page de suivi des Ă©quipements (TrackingView) #### 2. Composants modifiĂ©s - **IPDetails.vue**: Ajout d'une checkbox "IP suivie" - **AppHeader.vue**: Ajout d'un bouton "Suivi" (jaune/orange) - **App.vue**: RemplacĂ© par `` pour le routing #### 3. Nouveaux composants - **views/MainView.vue**: Page principale (anciennement App.vue) - **views/TrackingView.vue**: Page de suivi avec grille d'Ă©quipements #### 4. DĂ©pendances - **Fichier**: `frontend/package.json` - **Ajout**: `vue-router@^4.2.5` ## 📋 Instructions de dĂ©ploiement ### Étape 1: Mise Ă  jour du backend ```bash # Se placer dans le rĂ©pertoire backend cd backend # Installer la nouvelle dĂ©pendance wakeonlan pip install -r requirements.txt # ExĂ©cuter la migration de base de donnĂ©es python -m backend.app.migrations.add_tracked_field ``` **Sortie attendue**: ``` → Ajout de la colonne 'tracked' Ă  la table IP... → CrĂ©ation de l'index sur 'tracked'... ✓ Migration terminĂ©e avec succĂšs! - Colonne 'tracked' ajoutĂ©e - Index 'idx_ip_tracked' créé ``` ### Étape 2: Mise Ă  jour du frontend ```bash # Se placer dans le rĂ©pertoire frontend cd frontend # Installer les nouvelles dĂ©pendances npm install # Rebuilder le frontend npm run build ``` ### Étape 3: RedĂ©marrer l'application #### Mode Docker: ```bash # Reconstruire l'image docker-compose build # RedĂ©marrer le conteneur docker-compose up -d ``` #### Mode dĂ©veloppement: ```bash # Terminal 1 - Backend cd backend python -m backend.app.main # Terminal 2 - Frontend cd frontend npm run dev ``` ## 🎯 Utilisation ### 1. Marquer une IP comme suivie 1. Cliquez sur une cellule IP dans la grille 2. Dans le panneau de gauche (dĂ©tails), cochez **"IP suivie"** 3. Cliquez sur **"Enregistrer"** ### 2. AccĂ©der Ă  la page de suivi 1. Cliquez sur le bouton **"Suivi"** dans le header (jaune/orange avec icĂŽne Ă©toile) 2. Vous arrivez sur `/tracking` avec la liste des Ă©quipements suivis ### 3. Actions disponibles Pour chaque Ă©quipement suivi: - **WOL** (bouton vert): Envoie un paquet Wake-on-LAN - NĂ©cessite une adresse MAC - DĂ©sactivĂ© si l'Ă©quipement est dĂ©jĂ  en ligne - **Éteindre** (bouton rose): Commande d'arrĂȘt - ⚠ NĂ©cessite une configuration supplĂ©mentaire (voir ci-dessous) - DĂ©sactivĂ© si l'Ă©quipement est hors ligne - **DĂ©tails** (bouton violet): Retourne Ă  la page principale avec l'IP sĂ©lectionnĂ©e ## ⚙ Configuration Wake-on-LAN ### PrĂ©requis matĂ©riels Pour que WOL fonctionne, l'Ă©quipement cible doit avoir: 1. **BIOS/UEFI**: Option "Wake-on-LAN" activĂ©e 2. **Carte rĂ©seau**: Support WOL activĂ© dans les propriĂ©tĂ©s (Windows) ou via `ethtool` (Linux) 3. **Alimentation**: Alimentation connectĂ©e (ATX) ### Configuration rĂ©seau Le paquet Magic Packet WOL est envoyĂ© en **broadcast** sur le rĂ©seau local. Assurez-vous que: - Le serveur IPWatch et l'Ă©quipement cible sont sur le mĂȘme rĂ©seau local - Aucun firewall ne bloque les paquets UDP broadcast ## 🔧 Configuration Shutdown (avancĂ©) La fonctionnalitĂ© d'arrĂȘt nĂ©cessite une configuration selon votre infrastructure: ### Option 1: SSH (Linux) ```python # Dans backend/app/routers/tracking.py import paramiko def shutdown_via_ssh(ip_address, username, password): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip_address, username=username, password=password) ssh.exec_command("sudo shutdown -h now") ssh.close() ``` **DĂ©pendance**: `pip install paramiko` ### Option 2: WMI (Windows) ```python # NĂ©cessite wmi-client-wrapper import wmi def shutdown_via_wmi(ip_address, username, password): c = wmi.WMI(computer=ip_address, user=username, password=password) os = c.Win32_OperatingSystem(Primary=1)[0] os.Shutdown() ``` **DĂ©pendance**: `pip install wmi-client-wrapper` ### Option 3: API REST (Équipements rĂ©seau) Pour les Ă©quipements rĂ©seau (routeurs, switches) avec API REST. ### ⚠ SĂ©curitĂ© **IMPORTANT**: Stockez les credentials de maniĂšre sĂ©curisĂ©e: - Utilisez des variables d'environnement - Ou un gestionnaire de secrets (Vault, AWS Secrets Manager) - **JAMAIS en clair dans le code** ## 🎹 Personnalisation visuelle ### Couleurs utilisĂ©es (Monokai) La page de suivi utilise la palette Monokai dĂ©finie dans `guidelines-css.md`: - **Vert** (`#A6E22E`): Équipement en ligne, bouton WOL - **Rose** (`#F92672`): Équipement hors ligne, bouton Éteindre - **Jaune** (`#E6DB74`): Bouton "Suivi" dans le header - **Cyan** (`#66D9EF`): Bouton RafraĂźchir - **Violet** (`#AE81FF`): Bouton DĂ©tails ### Layout - **Grille responsive**: 1-4 colonnes selon la taille d'Ă©cran - **Cartes d'Ă©quipements**: Bordure dynamique selon l'Ă©tat (en ligne/hors ligne) - **Halo lumineux**: Effet de shadow pour les Ă©quipements en ligne ## 🐛 DĂ©pannage ### Erreur: "La bibliothĂšque 'wakeonlan' n'est pas installĂ©e" ```bash pip install wakeonlan==3.1.0 ``` ### Erreur: "IP non trouvĂ©e dans la base de donnĂ©es" Assurez-vous que: 1. L'IP existe dans la base (scan rĂ©seau effectuĂ©) 2. La migration a bien Ă©tĂ© exĂ©cutĂ©e ### WOL ne fonctionne pas VĂ©rifiez: 1. L'adresse MAC est bien renseignĂ©e pour l'IP 2. L'Ă©quipement cible a WOL activĂ© dans le BIOS 3. Le serveur et la cible sont sur le mĂȘme rĂ©seau local ### Le bouton "Suivi" ne s'affiche pas VĂ©rifiez: 1. `npm install` a bien Ă©tĂ© exĂ©cutĂ© 2. Le frontend a Ă©tĂ© rebuilĂ© (`npm run build`) 3. Le navigateur n'a pas de cache (Ctrl+Shift+R pour forcer le refresh) ## 📊 Structure des fichiers ``` ipwatch/ ├── backend/ │ ├── app/ │ │ ├── models/ip.py [MODIFIÉ] │ │ ├── routers/ │ │ │ ├── ips.py [MODIFIÉ] │ │ │ └── tracking.py [NOUVEAU] │ │ ├── migrations/ │ │ │ └── add_tracked_field.py [NOUVEAU] │ │ └── main.py [MODIFIÉ] │ └── requirements.txt [MODIFIÉ] │ ├── frontend/ │ ├── src/ │ │ ├── router/ │ │ │ └── index.js [NOUVEAU] │ │ ├── views/ │ │ │ ├── MainView.vue [NOUVEAU] │ │ │ └── TrackingView.vue [NOUVEAU] │ │ ├── components/ │ │ │ ├── AppHeader.vue [MODIFIÉ] │ │ │ └── IPDetails.vue [MODIFIÉ] │ │ ├── App.vue [MODIFIÉ] │ │ └── main.js [MODIFIÉ] │ └── package.json [MODIFIÉ] │ └── SUIVI_EQUIPEMENTS.md [CE FICHIER] ``` ## 🚀 AmĂ©liorations futures - [ ] Groupes d'Ă©quipements (ex: "Serveurs", "Imprimantes") - [ ] Historique des dĂ©marrages/arrĂȘts - [ ] Notifications push lors de changements d'Ă©tat - [ ] Planification horaire (dĂ©marrage/arrĂȘt automatique) - [ ] Graphiques d'uptime - [ ] Support IPMI/iLO/iDRAC pour serveurs - [ ] Export CSV/Excel des Ă©quipements suivis - [ ] Tags personnalisĂ©s ## 📞 Support Pour toute question ou problĂšme: 1. Consultez les logs du backend: `docker logs ipwatch_backend` 2. Consultez la console du navigateur (F12) 3. VĂ©rifiez que la migration a bien Ă©tĂ© exĂ©cutĂ©e