auto_clea
This commit is contained in:
parent
cddb14c39d
commit
75df8cb3de
@ -21,6 +21,7 @@
|
|||||||
- `nginx_redirects_summary.txt`
|
- `nginx_redirects_summary.txt`
|
||||||
- `compose_services.txt`
|
- `compose_services.txt`
|
||||||
- `data/` (copie à l’instant T)
|
- `data/` (copie à l’instant T)
|
||||||
|
- Ne fait de backups en dehors de 4NK_env/backups/
|
||||||
|
|
||||||
### Utilisation
|
### Utilisation
|
||||||
```bash
|
```bash
|
||||||
|
@ -11,6 +11,7 @@ Centraliser toute la documentation des projets dans `4NK_env/docs/<projet>/` et
|
|||||||
- Emplacement unique: `4NK_env/docs/<projet>/`.
|
- Emplacement unique: `4NK_env/docs/<projet>/`.
|
||||||
- Pas de duplication ni de divergence documentaire dans les sous‑projets.
|
- Pas de duplication ni de divergence documentaire dans les sous‑projets.
|
||||||
- Les références dans README, CI et scripts doivent pointer vers le chemin centralisé.
|
- Les références dans README, CI et scripts doivent pointer vers le chemin centralisé.
|
||||||
|
- Ne faite pas de nouveaux fichier md mais complete les fichiers existants
|
||||||
|
|
||||||
### Actions (TODO)
|
### Actions (TODO)
|
||||||
- Vérifier qu’aucun `docs/` résiduel n’existe dans les sous‑projets.
|
- Vérifier qu’aucun `docs/` résiduel n’existe dans les sous‑projets.
|
||||||
|
@ -68,6 +68,8 @@ Tous les documents des projets doivent être dans un dossier `docs/`
|
|||||||
|
|
||||||
- Tu dois bien gérer les branche "ext" et les tags "ext" en évitant les conflit
|
- Tu dois bien gérer les branche "ext" et les tags "ext" en évitant les conflit
|
||||||
|
|
||||||
|
- Ne créer pas de liens symboliques mais pointe directement sur les fichiers
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Note** : Ce prompt est basé sur `4NK_env/IA_agents/prompts/prompt-global.md`.
|
**Note** : Ce prompt est basé sur `4NK_env/IA_agents/prompts/prompt-global.md`.
|
||||||
|
@ -15,6 +15,7 @@ Uniformiser l’emplacement et l’usage des scripts d’exploitation pour tous
|
|||||||
- Documentation: référencer préférentiellement `4NK_env/scripts/<projet>/...`.
|
- Documentation: référencer préférentiellement `4NK_env/scripts/<projet>/...`.
|
||||||
- CI/Docker: aucune modification nécessaire si les chemins relatifs à `./scripts/` étaient utilisés (les liens absorbent le changement).
|
- CI/Docker: aucune modification nécessaire si les chemins relatifs à `./scripts/` étaient utilisés (les liens absorbent le changement).
|
||||||
- Gouvernance: éviter de recréer des variantes de scripts; améliorer l’existant.
|
- Gouvernance: éviter de recréer des variantes de scripts; améliorer l’existant.
|
||||||
|
- Ne faite pas de nouveaux fichiers de scripts mais complete les fichiers existants
|
||||||
|
|
||||||
### Vérification post‑migration
|
### Vérification post‑migration
|
||||||
1. Rechercher des références à `scripts/` et valider qu’elles pointent sur le lien:
|
1. Rechercher des références à `scripts/` et valider qu’elles pointent sur le lien:
|
||||||
|
135
docs/README-URL-TESTS.md
Normal file
135
docs/README-URL-TESTS.md
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
# Tests de Santé des URLs - LeCoffre Node
|
||||||
|
|
||||||
|
## 🎯 Objectif
|
||||||
|
|
||||||
|
Ce répertoire contient les scripts de vérification de santé des URLs pour LeCoffre Node, intégrés dans les processus de backup et de production.
|
||||||
|
|
||||||
|
## 📁 Fichiers Créés
|
||||||
|
|
||||||
|
### Scripts Principaux
|
||||||
|
- **`url-health-check.sh`** : Script principal de test d'URLs (toutes les URLs internes et externes)
|
||||||
|
- **`production-health-check.sh`** : Script de vérification complète pour la production (avec rapport Markdown)
|
||||||
|
- **`backup-data.sh`** : Script de backup modifié (intègre les tests d'URLs avant/après)
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- **`URL-HEALTH-CHECKING.md`** : Documentation complète des tests d'URLs
|
||||||
|
- **`README-URL-TESTS.md`** : Ce fichier (synthèse)
|
||||||
|
|
||||||
|
## 🚀 Utilisation Rapide
|
||||||
|
|
||||||
|
### Test des URLs
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./url-health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rapport de Production
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./production-health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Backup avec Tests
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./backup-data.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 URLs Testées
|
||||||
|
|
||||||
|
### ✅ URLs Interne (Services Docker)
|
||||||
|
- BlindBit Oracle API (`http://localhost:8000/tweaks/1`)
|
||||||
|
- SDK Storage Health (`http://localhost:8081/health`)
|
||||||
|
- SDK Relay WebSocket (`http://localhost:8091/`)
|
||||||
|
- SDK Relay HTTP (`http://localhost:8090/`)
|
||||||
|
- LeCoffre Frontend (`http://localhost:3004/`)
|
||||||
|
- IHM Client (`http://localhost:3003/`)
|
||||||
|
- Grafana (`http://localhost:3005/`)
|
||||||
|
- Loki (`http://localhost:3100/ready`)
|
||||||
|
- Status API (`http://localhost:3006/api`)
|
||||||
|
|
||||||
|
### ✅ URLs Externes (Domaine Public)
|
||||||
|
- Site Principal (`https://dev4.4nkweb.com/`)
|
||||||
|
- Page de Statut (`https://dev4.4nkweb.com/status/`)
|
||||||
|
- Dashboard Grafana (`https://dev4.4nkweb.com/grafana/`)
|
||||||
|
- Application LeCoffre (`https://dev4.4nkweb.com/lecoffre/`)
|
||||||
|
- Login LeCoffre (`https://dev4.4nkweb.com/lecoffre/login`)
|
||||||
|
- Callback Auth (`https://dev4.4nkweb.com/lecoffre/authorized-client`)
|
||||||
|
|
||||||
|
### ✅ APIs Externes (Backend Services)
|
||||||
|
- API Backend Health (`https://dev3.4nkweb.com/api/v1/health`)
|
||||||
|
- API Backend Status (`https://dev3.4nkweb.com/api/v1/status`)
|
||||||
|
- IdNot State Endpoint (`https://dev3.4nkweb.com/api/v1/idnot/state`)
|
||||||
|
|
||||||
|
### ✅ WebSockets Externes
|
||||||
|
- Bootstrap Relay (`wss://dev3.4nkweb.com/ws/`)
|
||||||
|
|
||||||
|
### ✅ Services Externes (Dépendances)
|
||||||
|
- Mempool Signet (`https://mempool2.4nkweb.com/`)
|
||||||
|
- Service IdNot (`https://qual-connexion.idnot.fr/`)
|
||||||
|
- IdNot Authorization (`https://qual-connexion.idnot.fr/IdPOAuth2/authorize/idnot_idp_v1`)
|
||||||
|
|
||||||
|
## 📈 Intégration dans les Processus
|
||||||
|
|
||||||
|
### Backup
|
||||||
|
- **Avant** : Test de l'état des URLs
|
||||||
|
- **Après** : Vérification de la cohérence
|
||||||
|
- **Logs** : Sauvegardés avec le backup
|
||||||
|
|
||||||
|
### Production
|
||||||
|
- **État complet** : Services, disque, mémoire, volumes
|
||||||
|
- **Rapport Markdown** : Généré automatiquement
|
||||||
|
- **Recommandations** : Actions suggérées
|
||||||
|
|
||||||
|
## 🔍 Codes de Retour
|
||||||
|
|
||||||
|
- **0** : Toutes les URLs sont accessibles
|
||||||
|
- **1** : Certaines URLs ne sont pas accessibles (majorité fonctionne)
|
||||||
|
- **2** : Trop d'URLs ne sont pas accessibles
|
||||||
|
|
||||||
|
## 📝 Fichiers Générés
|
||||||
|
|
||||||
|
### Backup
|
||||||
|
```
|
||||||
|
./backups/
|
||||||
|
├── lecoffre_backup_YYYYMMDD_HHMMSS.tar.gz
|
||||||
|
├── url-health-check-pre-backup-YYYYMMDD_HHMMSS.log
|
||||||
|
└── url-health-check-post-backup-YYYYMMDD_HHMMSS.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Production
|
||||||
|
```
|
||||||
|
./reports/
|
||||||
|
├── production-health-report-YYYYMMDD_HHMMSS.md
|
||||||
|
└── url-tests-production-YYYYMMDD_HHMMSS.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚨 Dépannage
|
||||||
|
|
||||||
|
### URLs Internes Non Accessibles
|
||||||
|
- Vérifier les services Docker : `docker ps`
|
||||||
|
- Consulter les logs : `docker logs <service_name>`
|
||||||
|
- Vérifier les ports et la configuration réseau
|
||||||
|
|
||||||
|
### URLs Externes Non Accessibles
|
||||||
|
- Vérifier la configuration nginx
|
||||||
|
- Vérifier les certificats SSL
|
||||||
|
- Vérifier la connectivité réseau externe
|
||||||
|
|
||||||
|
### APIs Non Accessibles
|
||||||
|
- Vérifier la configuration CORS
|
||||||
|
- Vérifier la connectivité vers dev3.4nkweb.com
|
||||||
|
- Consulter les logs du backend
|
||||||
|
|
||||||
|
## 📚 Documentation Complète
|
||||||
|
|
||||||
|
Pour plus de détails, consultez :
|
||||||
|
- **`docs/scripts/URL-HEALTH-CHECKING.md`** : Documentation complète
|
||||||
|
- **`scripts/url-health-check.sh`** : Code source du script principal
|
||||||
|
- **`scripts/production-health-check.sh`** : Code source du script de production
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Créé le 2025-09-25**
|
||||||
|
**Version** : 1.0
|
||||||
|
**Usage** : Tests de santé LeCoffre Node
|
214
docs/scripts/URL-HEALTH-CHECKING.md
Normal file
214
docs/scripts/URL-HEALTH-CHECKING.md
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
# Documentation - Tests de Santé des URLs LeCoffre Node
|
||||||
|
|
||||||
|
## 📋 Vue d'ensemble
|
||||||
|
|
||||||
|
Ce document décrit les scripts de vérification de santé des URLs pour LeCoffre Node, intégrés dans les processus de backup et de production.
|
||||||
|
|
||||||
|
## 🔧 Scripts Disponibles
|
||||||
|
|
||||||
|
### 1. `url-health-check.sh`
|
||||||
|
**Script principal de test d'URLs**
|
||||||
|
|
||||||
|
**Usage :**
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./url-health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fonctionnalités :**
|
||||||
|
- Test de toutes les URLs internes (services Docker)
|
||||||
|
- Test de toutes les URLs externes (domaine public)
|
||||||
|
- Test des APIs externes (backend services)
|
||||||
|
- Test des WebSockets externes
|
||||||
|
- Test des services externes (dépendances)
|
||||||
|
- Rapport détaillé avec codes de retour
|
||||||
|
|
||||||
|
**Codes de retour :**
|
||||||
|
- `0` : Toutes les URLs sont accessibles
|
||||||
|
- `1` : Certaines URLs ne sont pas accessibles (majorité fonctionne)
|
||||||
|
- `2` : Trop d'URLs ne sont pas accessibles
|
||||||
|
|
||||||
|
### 2. `production-health-check.sh`
|
||||||
|
**Script de vérification complète pour la production**
|
||||||
|
|
||||||
|
**Usage :**
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./production-health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fonctionnalités :**
|
||||||
|
- État des services Docker
|
||||||
|
- Espace disque système
|
||||||
|
- Mémoire système
|
||||||
|
- Volumes Docker
|
||||||
|
- Tests d'URLs complets
|
||||||
|
- Génération d'un rapport Markdown détaillé
|
||||||
|
|
||||||
|
### 3. `backup-data.sh` (Modifié)
|
||||||
|
**Script de backup avec intégration des tests d'URLs**
|
||||||
|
|
||||||
|
**Usage :**
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./backup-data.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Nouvelles fonctionnalités :**
|
||||||
|
- Test des URLs avant la sauvegarde
|
||||||
|
- Test des URLs après la sauvegarde
|
||||||
|
- Logs des tests intégrés dans le backup
|
||||||
|
- Rapport de cohérence avant/après
|
||||||
|
|
||||||
|
## 📊 URLs Testées
|
||||||
|
|
||||||
|
### URLs Internes (Services Docker)
|
||||||
|
|
||||||
|
| Service | URL | Code Attendu | Description |
|
||||||
|
|---------|-----|--------------|-------------|
|
||||||
|
| BlindBit Oracle | `http://localhost:8000/tweaks/1` | 200 | API BlindBit |
|
||||||
|
| SDK Storage | `http://localhost:8081/health` | 200 | Health check SDK Storage |
|
||||||
|
| SDK Relay | `http://localhost:8091/` | 200 | Interface WebSocket SDK Relay |
|
||||||
|
| SDK Relay | `http://localhost:8090/` | 200 | Interface HTTP SDK Relay |
|
||||||
|
| LeCoffre Frontend | `http://localhost:3004/` | 200,301,302,307,308 | Frontend racine |
|
||||||
|
| LeCoffre Frontend | `http://localhost:3004/login` | 200,301,302,307,308 | Page de login |
|
||||||
|
| LeCoffre Frontend | `http://localhost:3004/lecoffre/` | 200,301,302,307,308 | Application LeCoffre |
|
||||||
|
| IHM Client | `http://localhost:3003/` | 200 | Interface IHM Client |
|
||||||
|
| Grafana | `http://localhost:3005/api/health` | 200 | Health check Grafana |
|
||||||
|
| Grafana | `http://localhost:3005/` | 200,301,302 | Dashboard Grafana |
|
||||||
|
| Loki | `http://localhost:3100/ready` | 200 | Health check Loki |
|
||||||
|
| Status API | `http://localhost:3006/api` | 200 | API de statut |
|
||||||
|
|
||||||
|
### URLs Externes (Domaine Public)
|
||||||
|
|
||||||
|
| Service | URL | Code Attendu | Description |
|
||||||
|
|---------|-----|--------------|-------------|
|
||||||
|
| Site Principal | `https://dev4.4nkweb.com/` | 200,301,302 | Site principal |
|
||||||
|
| Page de Statut | `https://dev4.4nkweb.com/status/` | 200 | Page de statut des services |
|
||||||
|
| Dashboard Grafana | `https://dev4.4nkweb.com/grafana/` | 200,301,302 | Dashboard Grafana public |
|
||||||
|
| Application LeCoffre | `https://dev4.4nkweb.com/lecoffre/` | 200,301,302 | Application LeCoffre publique |
|
||||||
|
| Login LeCoffre | `https://dev4.4nkweb.com/lecoffre/login` | 200,301,302 | Page de login publique |
|
||||||
|
| Callback Auth | `https://dev4.4nkweb.com/lecoffre/authorized-client` | 200,301,302 | Callback d'authentification |
|
||||||
|
|
||||||
|
### APIs Externes (Backend Services)
|
||||||
|
|
||||||
|
| Service | URL | Méthode | Code Attendu | Description |
|
||||||
|
|---------|-----|---------|--------------|-------------|
|
||||||
|
| API Backend | `https://dev3.4nkweb.com/api/v1/health` | GET | 200 | Health check API backend |
|
||||||
|
| API Backend | `https://dev3.4nkweb.com/api/v1/status` | GET | 200 | Status API backend |
|
||||||
|
| IdNot State | `https://dev3.4nkweb.com/api/v1/idnot/state` | POST | 200 | Endpoint d'état IdNot |
|
||||||
|
|
||||||
|
### WebSockets Externes
|
||||||
|
|
||||||
|
| Service | URL | Description |
|
||||||
|
|---------|-----|-------------|
|
||||||
|
| Bootstrap Relay | `wss://dev3.4nkweb.com/ws/` | WebSocket de relais bootstrap |
|
||||||
|
|
||||||
|
### Services Externes (Dépendances)
|
||||||
|
|
||||||
|
| Service | URL | Code Attendu | Description |
|
||||||
|
|---------|-----|--------------|-------------|
|
||||||
|
| Mempool Signet | `https://mempool2.4nkweb.com/` | 200,301,302 | Explorateur de blockchain |
|
||||||
|
| Service IdNot | `https://qual-connexion.idnot.fr/` | 200,301,302 | Service d'authentification IdNot |
|
||||||
|
| IdNot Auth | `https://qual-connexion.idnot.fr/IdPOAuth2/authorize/idnot_idp_v1` | 200,301,302 | Endpoint d'autorisation IdNot |
|
||||||
|
|
||||||
|
## 📁 Structure des Fichiers Générés
|
||||||
|
|
||||||
|
### Backup avec Tests d'URLs
|
||||||
|
```
|
||||||
|
./backups/
|
||||||
|
├── lecoffre_backup_YYYYMMDD_HHMMSS.tar.gz
|
||||||
|
├── url-health-check-pre-backup-YYYYMMDD_HHMMSS.log
|
||||||
|
└── url-health-check-post-backup-YYYYMMDD_HHMMSS.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Production Health Check
|
||||||
|
```
|
||||||
|
./reports/
|
||||||
|
├── production-health-report-YYYYMMDD_HHMMSS.md
|
||||||
|
└── url-tests-production-YYYYMMDD_HHMMSS.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔍 Interprétation des Résultats
|
||||||
|
|
||||||
|
### Codes de Statut HTTP
|
||||||
|
- **200** : OK - Service accessible et fonctionnel
|
||||||
|
- **301, 302, 307, 308** : Redirections - Acceptables pour certains services
|
||||||
|
- **404** : Not Found - Service non trouvé ou mal configuré
|
||||||
|
- **500** : Internal Server Error - Erreur serveur
|
||||||
|
- **000** : Connection Failed - Impossible de se connecter
|
||||||
|
|
||||||
|
### Codes de Retour des Scripts
|
||||||
|
- **0** : Succès complet
|
||||||
|
- **1** : Succès partiel (certaines URLs échouent)
|
||||||
|
- **2** : Échec (trop d'URLs échouent)
|
||||||
|
|
||||||
|
## 🚨 Dépannage
|
||||||
|
|
||||||
|
### URLs Internes Non Accessibles
|
||||||
|
1. Vérifier que les services Docker sont démarrés
|
||||||
|
2. Vérifier les ports et la configuration réseau
|
||||||
|
3. Consulter les logs des services : `docker logs <service_name>`
|
||||||
|
|
||||||
|
### URLs Externes Non Accessibles
|
||||||
|
1. Vérifier la configuration nginx
|
||||||
|
2. Vérifier les certificats SSL
|
||||||
|
3. Vérifier la connectivité réseau externe
|
||||||
|
4. Consulter les logs nginx
|
||||||
|
|
||||||
|
### APIs Non Accessibles
|
||||||
|
1. Vérifier la configuration CORS
|
||||||
|
2. Vérifier les headers d'authentification
|
||||||
|
3. Vérifier la connectivité vers dev3.4nkweb.com
|
||||||
|
4. Consulter les logs du backend
|
||||||
|
|
||||||
|
## 📝 Exemples d'Utilisation
|
||||||
|
|
||||||
|
### Test Rapide des URLs
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./url-health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rapport Complet de Production
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./production-health-check.sh
|
||||||
|
cat ./reports/production-health-report-*.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Backup avec Tests d'URLs
|
||||||
|
```bash
|
||||||
|
cd /home/debian/4NK_env/scripts/lecoffre_node
|
||||||
|
./backup-data.sh
|
||||||
|
ls -la ./backups/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Surveillance Continue
|
||||||
|
```bash
|
||||||
|
# Ajouter dans un cron pour surveillance automatique
|
||||||
|
0 */6 * * * cd /home/debian/4NK_env/scripts/lecoffre_node && ./url-health-check.sh > /var/log/url-health-check.log 2>&1
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Maintenance
|
||||||
|
|
||||||
|
### Mise à Jour des URLs
|
||||||
|
Pour ajouter ou modifier des URLs testées :
|
||||||
|
1. Éditer `url-health-check.sh`
|
||||||
|
2. Ajouter/modifier les sections appropriées
|
||||||
|
3. Tester le script
|
||||||
|
4. Mettre à jour cette documentation
|
||||||
|
|
||||||
|
### Configuration des Timeouts
|
||||||
|
Les timeouts par défaut sont :
|
||||||
|
- URLs internes : 5-10 secondes
|
||||||
|
- URLs externes : 10-15 secondes
|
||||||
|
- WebSockets : 5 secondes
|
||||||
|
|
||||||
|
Pour modifier les timeouts, éditer les paramètres dans les fonctions `test_url()` et `test_websocket()`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Document créé le 2025-09-25**
|
||||||
|
**Version** : 1.0
|
||||||
|
**Usage** : Scripts de santé LeCoffre Node
|
@ -1 +1 @@
|
|||||||
Subproject commit 516d38d7c587620856e226aab1a00a90a4841d1d
|
Subproject commit a6215adf3f7f180abed864276922d1c1a1458902
|
125
scripts/add-missing-env-vars.sh
Executable file
125
scripts/add-missing-env-vars.sh
Executable file
@ -0,0 +1,125 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Script pour ajouter les variables d'environnement manquantes au fichier .env.master
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Couleurs pour l'affichage
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
ENV_FILE="/home/debian/4NK_env/.env.master"
|
||||||
|
BACKUP_FILE="${ENV_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
|
||||||
|
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo -e "${BLUE} Ajout des Variables d'Environnement Manquantes${NC}"
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Fonction pour vérifier si une variable existe
|
||||||
|
check_var_exists() {
|
||||||
|
local var_name="$1"
|
||||||
|
grep -q "^${var_name}=" "$ENV_FILE" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour ajouter une variable si elle n'existe pas
|
||||||
|
add_var_if_missing() {
|
||||||
|
local var_name="$1"
|
||||||
|
local var_value="$2"
|
||||||
|
local description="$3"
|
||||||
|
|
||||||
|
if ! check_var_exists "$var_name"; then
|
||||||
|
echo -e "${YELLOW}Ajout de ${var_name}: ${description}${NC}"
|
||||||
|
echo "${var_name}=${var_value}" >> "$ENV_FILE"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ ${var_name} existe déjà${NC}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Créer une sauvegarde
|
||||||
|
echo -e "${BLUE}Création d'une sauvegarde: ${BACKUP_FILE}${NC}"
|
||||||
|
cp "$ENV_FILE" "$BACKUP_FILE"
|
||||||
|
|
||||||
|
echo -e "${BLUE}Ajout des variables manquantes...${NC}"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables Bitcoin
|
||||||
|
echo -e "${CYAN}=== Variables Bitcoin ===${NC}"
|
||||||
|
add_var_if_missing "BITCOIN_RPC_USER" "bitcoin_user" "Nom d'utilisateur RPC Bitcoin"
|
||||||
|
add_var_if_missing "BITCOIN_RPC_PASSWORD" "FAKE-DATA-IA-bitcoin_password_secure" "Mot de passe RPC Bitcoin"
|
||||||
|
add_var_if_missing "BITCOIN_RPC_PORT" "38332" "Port RPC Bitcoin"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables BlindBit
|
||||||
|
echo -e "${CYAN}=== Variables BlindBit ===${NC}"
|
||||||
|
add_var_if_missing "BLINDBIT_API_PORT" "8000" "Port de l'API BlindBit"
|
||||||
|
add_var_if_missing "BITCOIN_RPC_URL" "http://bitcoin:38332" "URL du RPC Bitcoin"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables SDK Relay
|
||||||
|
echo -e "${CYAN}=== Variables SDK Relay ===${NC}"
|
||||||
|
add_var_if_missing "RELAY_PORT" "8090" "Port du relay"
|
||||||
|
add_var_if_missing "RELAY_HTTP_PORT" "8091" "Port HTTP du relay"
|
||||||
|
add_var_if_missing "STORAGE_URL" "http://sdk_storage:8080" "URL du service de stockage"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables SDK Storage
|
||||||
|
echo -e "${CYAN}=== Variables SDK Storage ===${NC}"
|
||||||
|
add_var_if_missing "STORAGE_PORT" "8080" "Port du service de stockage"
|
||||||
|
add_var_if_missing "STORAGE_DATA_DIR" "/app/data" "Répertoire des données de stockage"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables IHM Client
|
||||||
|
echo -e "${CYAN}=== Variables IHM Client ===${NC}"
|
||||||
|
add_var_if_missing "VITE_API_URL" "https://dev4.4nkweb.com/api" "URL de l'API pour Vite"
|
||||||
|
add_var_if_missing "VITE_4NK_URL" "https://dev4.4nkweb.com" "URL 4NK pour Vite"
|
||||||
|
add_var_if_missing "VITE_RELAY_URL" "wss://dev4.4nkweb.com/ws" "URL du relay pour Vite"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables Grafana
|
||||||
|
echo -e "${CYAN}=== Variables Grafana ===${NC}"
|
||||||
|
add_var_if_missing "GF_SECURITY_ADMIN_PASSWORD" "FAKE-DATA-IA-admin123" "Mot de passe admin Grafana"
|
||||||
|
add_var_if_missing "GF_DATABASE_TYPE" "sqlite3" "Type de base de données Grafana"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables Loki
|
||||||
|
echo -e "${CYAN}=== Variables Loki ===${NC}"
|
||||||
|
add_var_if_missing "LOKI_CONFIG_FILE" "/etc/loki/loki-config.yaml" "Fichier de configuration Loki"
|
||||||
|
add_var_if_missing "LOKI_DATA_DIR" "/app/data" "Répertoire des données Loki"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables Status API
|
||||||
|
echo -e "${CYAN}=== Variables Status API ===${NC}"
|
||||||
|
add_var_if_missing "STATUS_API_PORT" "3006" "Port de l'API de statut"
|
||||||
|
add_var_if_missing "STATUS_API_HOST" "0.0.0.0" "Hôte de l'API de statut"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Variables Tor (pour compléter)
|
||||||
|
echo -e "${CYAN}=== Variables Tor ===${NC}"
|
||||||
|
add_var_if_missing "TOR_SOCKS_PORT" "9050" "Port SOCKS Tor"
|
||||||
|
add_var_if_missing "TOR_CONTROL_PORT" "9051" "Port de contrôle Tor"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ Variables ajoutées avec succès !${NC}"
|
||||||
|
echo
|
||||||
|
echo -e "${BLUE}Fichiers:${NC}"
|
||||||
|
echo -e "${YELLOW} - Fichier principal: ${ENV_FILE}${NC}"
|
||||||
|
echo -e "${YELLOW} - Sauvegarde: ${BACKUP_FILE}${NC}"
|
||||||
|
echo
|
||||||
|
echo -e "${BLUE}Pour tester:${NC}"
|
||||||
|
echo -e "${YELLOW} cd /home/debian/4NK_env/scripts/lecoffre_node${NC}"
|
||||||
|
echo -e "${YELLOW} ./start.sh${NC}"
|
||||||
|
echo
|
@ -22,6 +22,16 @@ echo -e "${BLUE} LeCoffre Node - Data Backup${NC}"
|
|||||||
echo -e "${BLUE}========================================${NC}"
|
echo -e "${BLUE}========================================${NC}"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
# Vérification de l'état des URLs avant la sauvegarde
|
||||||
|
echo -e "${YELLOW}=== Vérification de l'état des services avant sauvegarde ===${NC}"
|
||||||
|
if [ -f "./scripts/url-health-check.sh" ]; then
|
||||||
|
./scripts/url-health-check.sh > "$BACKUP_DIR/url-health-check-pre-backup-${TIMESTAMP}.log" 2>&1
|
||||||
|
echo -e "${GREEN}✓ État des URLs enregistré dans: $BACKUP_DIR/url-health-check-pre-backup-${TIMESTAMP}.log${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠ Script url-health-check.sh non trouvé${NC}"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
# Créer le répertoire de sauvegarde
|
# Créer le répertoire de sauvegarde
|
||||||
mkdir -p "$BACKUP_DIR"
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
@ -66,6 +76,16 @@ tar -czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME" --ignore-failed-read 2>/dev/null
|
|||||||
rm -rf "$BACKUP_NAME" || sudo rm -rf "$BACKUP_NAME" || true
|
rm -rf "$BACKUP_NAME" || sudo rm -rf "$BACKUP_NAME" || true
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
# Vérification de l'état des URLs après la sauvegarde
|
||||||
|
echo -e "${YELLOW}=== Vérification de l'état des services après sauvegarde ===${NC}"
|
||||||
|
if [ -f "./scripts/url-health-check.sh" ]; then
|
||||||
|
./scripts/url-health-check.sh > "$BACKUP_DIR/url-health-check-post-backup-${TIMESTAMP}.log" 2>&1
|
||||||
|
echo -e "${GREEN}✓ État des URLs enregistré dans: $BACKUP_DIR/url-health-check-post-backup-${TIMESTAMP}.log${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠ Script url-health-check.sh non trouvé${NC}"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
|
||||||
# Afficher les informations de sauvegarde
|
# Afficher les informations de sauvegarde
|
||||||
BACKUP_SIZE=$(du -h "$BACKUP_DIR/${BACKUP_NAME}.tar.gz" | cut -f1)
|
BACKUP_SIZE=$(du -h "$BACKUP_DIR/${BACKUP_NAME}.tar.gz" | cut -f1)
|
||||||
echo
|
echo
|
||||||
@ -73,6 +93,11 @@ echo -e "${GREEN}✅ Backup completed successfully!${NC}"
|
|||||||
echo -e "${GREEN}Backup file: $BACKUP_DIR/${BACKUP_NAME}.tar.gz${NC}"
|
echo -e "${GREEN}Backup file: $BACKUP_DIR/${BACKUP_NAME}.tar.gz${NC}"
|
||||||
echo -e "${GREEN}Backup size: $BACKUP_SIZE${NC}"
|
echo -e "${GREEN}Backup size: $BACKUP_SIZE${NC}"
|
||||||
echo
|
echo
|
||||||
|
echo -e "${BLUE}Files created:${NC}"
|
||||||
|
echo -e "${YELLOW} - ${BACKUP_NAME}.tar.gz (backup data)${NC}"
|
||||||
|
echo -e "${YELLOW} - url-health-check-pre-backup-${TIMESTAMP}.log (état avant)${NC}"
|
||||||
|
echo -e "${YELLOW} - url-health-check-post-backup-${TIMESTAMP}.log (état après)${NC}"
|
||||||
|
echo
|
||||||
echo -e "${BLUE}To restore this backup:${NC}"
|
echo -e "${BLUE}To restore this backup:${NC}"
|
||||||
echo -e "${YELLOW} ./scripts/restore-data.sh $BACKUP_NAME${NC}"
|
echo -e "${YELLOW} ./scripts/restore-data.sh $BACKUP_NAME${NC}"
|
||||||
echo
|
echo
|
||||||
|
@ -62,7 +62,7 @@ docker run -d \
|
|||||||
-v /home/debian/4NK_env/lecoffre_node/logs:/app/logs \
|
-v /home/debian/4NK_env/lecoffre_node/logs:/app/logs \
|
||||||
-v /home/debian/4NK_env/lecoffre_node/conf:/app/conf \
|
-v /home/debian/4NK_env/lecoffre_node/conf:/app/conf \
|
||||||
-v /home/debian/4NK_env/lecoffre_node/backup:/app/backup \
|
-v /home/debian/4NK_env/lecoffre_node/backup:/app/backup \
|
||||||
-v /home/debian/4NK_env/lecoffre_node/.env.master:/app/.env \
|
-v /home/debian/4NK_env/.env.master:/app/.env \
|
||||||
${MASTER_IMAGE_NAME}:${MASTER_IMAGE_TAG}
|
${MASTER_IMAGE_NAME}:${MASTER_IMAGE_TAG}
|
||||||
|
|
||||||
log "⏳ Attente du démarrage du conteneur master..."
|
log "⏳ Attente du démarrage du conteneur master..."
|
||||||
|
@ -102,7 +102,7 @@ restart_services() {
|
|||||||
print_message "Redémarrage des services..."
|
print_message "Redémarrage des services..."
|
||||||
|
|
||||||
echo -e "${YELLOW}Arrêt des services...${NC}"
|
echo -e "${YELLOW}Arrêt des services...${NC}"
|
||||||
docker compose --env-file .env.master down
|
docker compose --env-file /home/debian/4NK_env/.env.master down
|
||||||
|
|
||||||
echo -e "${YELLOW}Démarrage des services...${NC}"
|
echo -e "${YELLOW}Démarrage des services...${NC}"
|
||||||
./scripts/start.sh
|
./scripts/start.sh
|
||||||
@ -125,7 +125,7 @@ check_health() {
|
|||||||
print_message "Vérification de la santé des services..."
|
print_message "Vérification de la santé des services..."
|
||||||
|
|
||||||
echo -e "${CYAN}Statut des conteneurs:${NC}"
|
echo -e "${CYAN}Statut des conteneurs:${NC}"
|
||||||
docker compose --env-file .env.master ps
|
docker compose --env-file /home/debian/4NK_env/.env.master ps
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo -e "${CYAN}Utilisation des ressources:${NC}"
|
echo -e "${CYAN}Utilisation des ressources:${NC}"
|
||||||
|
308
scripts/lecoffre_node/production-health-check.sh
Executable file
308
scripts/lecoffre_node/production-health-check.sh
Executable file
@ -0,0 +1,308 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# LeCoffre Node - Script de vérification de santé pour la production
|
||||||
|
# Vérifie l'état complet du système et génère un rapport détaillé
|
||||||
|
# Utilisé pour les déploiements en production et la maintenance
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Couleurs pour l'affichage
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
|
REPORT_DIR="./reports"
|
||||||
|
REPORT_FILE="$REPORT_DIR/production-health-report-${TIMESTAMP}.md"
|
||||||
|
|
||||||
|
# Fonction pour afficher un message avec timestamp
|
||||||
|
print_message() {
|
||||||
|
echo -e "${BLUE}[$(date '+%H:%M:%S')]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour initialiser le rapport
|
||||||
|
init_report() {
|
||||||
|
mkdir -p "$REPORT_DIR"
|
||||||
|
|
||||||
|
cat > "$REPORT_FILE" << EOF
|
||||||
|
# Rapport de Santé Production - LeCoffre Node
|
||||||
|
|
||||||
|
**Date**: $(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
**Timestamp**: $TIMESTAMP
|
||||||
|
**Environnement**: Production
|
||||||
|
**Serveur**: $(hostname)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Résumé Exécutif
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour ajouter une section au rapport
|
||||||
|
add_section() {
|
||||||
|
local section_title="$1"
|
||||||
|
echo "" >> "$REPORT_FILE"
|
||||||
|
echo "## $section_title" >> "$REPORT_FILE"
|
||||||
|
echo "" >> "$REPORT_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour ajouter du contenu au rapport
|
||||||
|
add_content() {
|
||||||
|
echo "$1" >> "$REPORT_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour exécuter le test d'URLs et capturer les résultats
|
||||||
|
run_url_tests() {
|
||||||
|
local test_type="$1"
|
||||||
|
local output_file="$REPORT_DIR/url-tests-${test_type}-${TIMESTAMP}.log"
|
||||||
|
|
||||||
|
print_message "Exécution des tests d'URLs ($test_type)..."
|
||||||
|
|
||||||
|
if [ -f "./scripts/url-health-check.sh" ]; then
|
||||||
|
./scripts/url-health-check.sh > "$output_file" 2>&1
|
||||||
|
local exit_code=$?
|
||||||
|
|
||||||
|
# Extraire les statistiques du log
|
||||||
|
local total_urls=$(grep "Total URLs testées:" "$output_file" | grep -o '[0-9]\+' || echo "0")
|
||||||
|
local accessible_urls=$(grep "URLs accessibles:" "$output_file" | grep -o '[0-9]\+' || echo "0")
|
||||||
|
local failed_urls=$(grep "URLs échouées:" "$output_file" | grep -o '[0-9]\+' || echo "0")
|
||||||
|
|
||||||
|
add_content "### Tests d'URLs ($test_type)"
|
||||||
|
add_content ""
|
||||||
|
add_content "| Métrique | Valeur |"
|
||||||
|
add_content "|----------|--------|"
|
||||||
|
add_content "| Total URLs testées | $total_urls |"
|
||||||
|
add_content "| URLs accessibles | $accessible_urls |"
|
||||||
|
add_content "| URLs échouées | $failed_urls |"
|
||||||
|
add_content "| Taux de réussite | $(( accessible_urls * 100 / (total_urls > 0 ? total_urls : 1) ))% |"
|
||||||
|
add_content ""
|
||||||
|
|
||||||
|
if [ $exit_code -eq 0 ]; then
|
||||||
|
add_content "✅ **Statut**: Toutes les URLs sont accessibles"
|
||||||
|
elif [ $exit_code -eq 1 ]; then
|
||||||
|
add_content "⚠️ **Statut**: Certaines URLs ne sont pas accessibles"
|
||||||
|
else
|
||||||
|
add_content "❌ **Statut**: Trop d'URLs ne sont pas accessibles"
|
||||||
|
fi
|
||||||
|
|
||||||
|
add_content ""
|
||||||
|
add_content "**Log détaillé**: \`$output_file\`"
|
||||||
|
add_content ""
|
||||||
|
|
||||||
|
return $exit_code
|
||||||
|
else
|
||||||
|
add_content "### Tests d'URLs ($test_type)"
|
||||||
|
add_content ""
|
||||||
|
add_content "❌ **Erreur**: Script url-health-check.sh non trouvé"
|
||||||
|
add_content ""
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour vérifier l'état des services Docker
|
||||||
|
check_docker_services() {
|
||||||
|
add_section "État des Services Docker"
|
||||||
|
|
||||||
|
print_message "Vérification des services Docker..."
|
||||||
|
|
||||||
|
# Liste des services à vérifier
|
||||||
|
local services=(
|
||||||
|
"tor-proxy:Tor Proxy"
|
||||||
|
"bitcoin-signet:Bitcoin Signet"
|
||||||
|
"blindbit-oracle:BlindBit Oracle"
|
||||||
|
"sdk_storage:SDK Storage"
|
||||||
|
"sdk_relay:SDK Relay"
|
||||||
|
"lecoffre-front:LeCoffre Frontend"
|
||||||
|
"ihm_client:IHM Client"
|
||||||
|
"grafana:Grafana"
|
||||||
|
"loki:Loki"
|
||||||
|
"promtail:Promtail"
|
||||||
|
"status-api:Status API"
|
||||||
|
"watchtower:Watchtower"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_content "| Service | Container | Statut | Santé | Uptime |"
|
||||||
|
add_content "|---------|-----------|--------|-------|--------|"
|
||||||
|
|
||||||
|
for service_entry in "${services[@]}"; do
|
||||||
|
local service_name="${service_entry%%:*}"
|
||||||
|
local display_name="${service_entry##*:}"
|
||||||
|
|
||||||
|
if docker ps --format '{{.Names}}' | grep -q "^${service_name}$"; then
|
||||||
|
local running=$(docker inspect --format='{{.State.Running}}' "$service_name" 2>/dev/null || echo "false")
|
||||||
|
local health=$(docker inspect --format='{{.State.Health.Status}}' "$service_name" 2>/dev/null || echo "no-healthcheck")
|
||||||
|
local uptime=$(docker inspect --format='{{.State.StartedAt}}' "$service_name" 2>/dev/null || echo "unknown")
|
||||||
|
|
||||||
|
if [ "$running" = "true" ]; then
|
||||||
|
if [ "$health" = "healthy" ]; then
|
||||||
|
add_content "| $display_name | $service_name | 🟢 Running | ✅ Healthy | $uptime |"
|
||||||
|
else
|
||||||
|
add_content "| $display_name | $service_name | 🟢 Running | ⚠️ $health | $uptime |"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
add_content "| $display_name | $service_name | 🔴 Stopped | ❌ Unhealthy | $uptime |"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
add_content "| $display_name | $service_name | ❌ Not Found | ❌ N/A | N/A |"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
add_content ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour vérifier l'espace disque
|
||||||
|
check_disk_space() {
|
||||||
|
add_section "Espace Disque"
|
||||||
|
|
||||||
|
print_message "Vérification de l'espace disque..."
|
||||||
|
|
||||||
|
add_content "| Partition | Taille | Utilisé | Disponible | Usage |"
|
||||||
|
add_content "|-----------|--------|---------|------------|-------|"
|
||||||
|
|
||||||
|
df -h | tail -n +2 | while read -r line; do
|
||||||
|
local partition=$(echo "$line" | awk '{print $1}')
|
||||||
|
local size=$(echo "$line" | awk '{print $2}')
|
||||||
|
local used=$(echo "$line" | awk '{print $3}')
|
||||||
|
local available=$(echo "$line" | awk '{print $4}')
|
||||||
|
local usage=$(echo "$line" | awk '{print $5}')
|
||||||
|
|
||||||
|
# Déterminer la couleur basée sur l'usage
|
||||||
|
local usage_num=$(echo "$usage" | sed 's/%//')
|
||||||
|
if [ "$usage_num" -gt 90 ]; then
|
||||||
|
local status="🔴"
|
||||||
|
elif [ "$usage_num" -gt 80 ]; then
|
||||||
|
local status="🟡"
|
||||||
|
else
|
||||||
|
local status="🟢"
|
||||||
|
fi
|
||||||
|
|
||||||
|
add_content "| $partition | $size | $used | $available | $status $usage |"
|
||||||
|
done
|
||||||
|
|
||||||
|
add_content ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour vérifier la mémoire
|
||||||
|
check_memory() {
|
||||||
|
add_section "Mémoire Système"
|
||||||
|
|
||||||
|
print_message "Vérification de la mémoire..."
|
||||||
|
|
||||||
|
local mem_info=$(free -h)
|
||||||
|
local total=$(echo "$mem_info" | grep "Mem:" | awk '{print $2}')
|
||||||
|
local used=$(echo "$mem_info" | grep "Mem:" | awk '{print $3}')
|
||||||
|
local free=$(echo "$mem_info" | grep "Mem:" | awk '{print $4}')
|
||||||
|
local available=$(echo "$mem_info" | grep "Mem:" | awk '{print $7}')
|
||||||
|
|
||||||
|
add_content "| Type | Taille |"
|
||||||
|
add_content "|------|--------|"
|
||||||
|
add_content "| Total | $total |"
|
||||||
|
add_content "| Utilisé | $used |"
|
||||||
|
add_content "| Libre | $free |"
|
||||||
|
add_content "| Disponible | $available |"
|
||||||
|
add_content ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour vérifier les volumes Docker
|
||||||
|
check_docker_volumes() {
|
||||||
|
add_section "Volumes Docker"
|
||||||
|
|
||||||
|
print_message "Vérification des volumes Docker..."
|
||||||
|
|
||||||
|
add_content "| Volume | Driver | Taille |"
|
||||||
|
add_content "|--------|--------|--------|"
|
||||||
|
|
||||||
|
docker volume ls --format "table {{.Name}}\t{{.Driver}}" | tail -n +2 | while read -r volume_name driver; do
|
||||||
|
if [[ "$volume_name" == *"4nk_node"* ]]; then
|
||||||
|
local size=$(docker system df -v 2>/dev/null | grep "$volume_name" | awk '{print $3}' || echo "N/A")
|
||||||
|
add_content "| $volume_name | $driver | $size |"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
add_content ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour générer le résumé final
|
||||||
|
generate_summary() {
|
||||||
|
add_section "Résumé et Recommandations"
|
||||||
|
|
||||||
|
add_content "### Points d'Attention"
|
||||||
|
add_content ""
|
||||||
|
add_content "- Vérifiez les URLs échouées dans les logs détaillés"
|
||||||
|
add_content "- Surveillez l'espace disque des partitions critiques"
|
||||||
|
add_content "- Vérifiez l'état de santé des services Docker"
|
||||||
|
add_content "- Consultez les logs des services pour les erreurs"
|
||||||
|
add_content ""
|
||||||
|
|
||||||
|
add_content "### Actions Recommandées"
|
||||||
|
add_content ""
|
||||||
|
add_content "1. **Maintenance Préventive**"
|
||||||
|
add_content " - Nettoyer les logs anciens"
|
||||||
|
add_content " - Vérifier les certificats SSL"
|
||||||
|
add_content " - Mettre à jour les images Docker"
|
||||||
|
add_content ""
|
||||||
|
add_content "2. **Surveillance Continue**"
|
||||||
|
add_content " - Monitorer les métriques Grafana"
|
||||||
|
add_content " - Surveiller les alertes Loki"
|
||||||
|
add_content " - Vérifier les backups automatiques"
|
||||||
|
add_content ""
|
||||||
|
add_content "3. **Sécurité**"
|
||||||
|
add_content " - Vérifier les accès SSH"
|
||||||
|
add_content " - Contrôler les certificats SSL"
|
||||||
|
add_content " - Auditer les logs de sécurité"
|
||||||
|
add_content ""
|
||||||
|
|
||||||
|
add_content "---"
|
||||||
|
add_content ""
|
||||||
|
add_content "*Rapport généré automatiquement par LeCoffre Node Production Health Check*"
|
||||||
|
add_content "*Timestamp: $TIMESTAMP*"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction principale
|
||||||
|
main() {
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo -e "${BLUE} LeCoffre Node - Production Health Check${NC}"
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo
|
||||||
|
|
||||||
|
print_message "Initialisation du rapport..."
|
||||||
|
init_report
|
||||||
|
|
||||||
|
print_message "Vérification des services Docker..."
|
||||||
|
check_docker_services
|
||||||
|
|
||||||
|
print_message "Vérification de l'espace disque..."
|
||||||
|
check_disk_space
|
||||||
|
|
||||||
|
print_message "Vérification de la mémoire..."
|
||||||
|
check_memory
|
||||||
|
|
||||||
|
print_message "Vérification des volumes Docker..."
|
||||||
|
check_docker_volumes
|
||||||
|
|
||||||
|
print_message "Exécution des tests d'URLs..."
|
||||||
|
run_url_tests "production"
|
||||||
|
|
||||||
|
print_message "Génération du résumé..."
|
||||||
|
generate_summary
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo -e "${GREEN}✅ Rapport de santé généré avec succès !${NC}"
|
||||||
|
echo -e "${GREEN}Rapport: $REPORT_FILE${NC}"
|
||||||
|
echo
|
||||||
|
echo -e "${BLUE}Fichiers générés:${NC}"
|
||||||
|
echo -e "${YELLOW} - $REPORT_FILE (rapport principal)${NC}"
|
||||||
|
echo -e "${YELLOW} - $REPORT_DIR/url-tests-production-${TIMESTAMP}.log (tests détaillés)${NC}"
|
||||||
|
echo
|
||||||
|
echo -e "${BLUE}Pour consulter le rapport:${NC}"
|
||||||
|
echo -e "${YELLOW} cat $REPORT_FILE${NC}"
|
||||||
|
echo -e "${YELLOW} less $REPORT_FILE${NC}"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Exécuter le script principal
|
||||||
|
main "$@"
|
@ -45,7 +45,7 @@ fi
|
|||||||
|
|
||||||
# Arrêter les services
|
# Arrêter les services
|
||||||
echo -e "${BLUE}Stopping services...${NC}"
|
echo -e "${BLUE}Stopping services...${NC}"
|
||||||
docker compose --env-file .env.master down >/dev/null 2>&1 || true
|
docker compose --env-file /home/debian/4NK_env/.env.master down >/dev/null 2>&1 || true
|
||||||
|
|
||||||
# Extraire la sauvegarde
|
# Extraire la sauvegarde
|
||||||
echo -e "${BLUE}Extracting backup...${NC}"
|
echo -e "${BLUE}Extracting backup...${NC}"
|
||||||
|
@ -174,13 +174,92 @@ wait_for_healthy() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Fonction pour vérifier les variables d'environnement d'un service
|
||||||
|
check_service_env() {
|
||||||
|
local service_name=$1
|
||||||
|
local display_name=$2
|
||||||
|
|
||||||
|
print_message "Checking environment variables for $display_name..."
|
||||||
|
|
||||||
|
# Vérifier que le fichier .env.master existe
|
||||||
|
if [ ! -f "/home/debian/4NK_env/.env.master" ]; then
|
||||||
|
echo -e "${RED}✗ Error: .env.master file not found${NC}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Variables critiques par service
|
||||||
|
case "$service_name" in
|
||||||
|
"bitcoin")
|
||||||
|
local critical_vars=("BITCOIN_RPC_USER" "BITCOIN_RPC_PASSWORD" "BITCOIN_RPC_PORT")
|
||||||
|
;;
|
||||||
|
"blindbit")
|
||||||
|
local critical_vars=("BLINDBIT_API_PORT" "BITCOIN_RPC_URL")
|
||||||
|
;;
|
||||||
|
"sdk_relay")
|
||||||
|
local critical_vars=("RELAY_PORT" "RELAY_HTTP_PORT" "STORAGE_URL")
|
||||||
|
;;
|
||||||
|
"sdk_storage")
|
||||||
|
local critical_vars=("STORAGE_PORT" "STORAGE_DATA_DIR")
|
||||||
|
;;
|
||||||
|
"lecoffre-front")
|
||||||
|
local critical_vars=("NEXT_PUBLIC_API_URL" "NEXT_PUBLIC_4NK_URL" "NEXT_PUBLIC_IDNOT_BASE_URL")
|
||||||
|
;;
|
||||||
|
"ihm_client")
|
||||||
|
local critical_vars=("VITE_API_URL" "VITE_4NK_URL" "VITE_RELAY_URL")
|
||||||
|
;;
|
||||||
|
"grafana")
|
||||||
|
local critical_vars=("GF_SECURITY_ADMIN_PASSWORD" "GF_DATABASE_TYPE")
|
||||||
|
;;
|
||||||
|
"loki")
|
||||||
|
local critical_vars=("LOKI_CONFIG_FILE" "LOKI_DATA_DIR")
|
||||||
|
;;
|
||||||
|
"promtail")
|
||||||
|
local critical_vars=("PROMTAIL_CONFIG_FILE" "LOKI_URL")
|
||||||
|
;;
|
||||||
|
"status-api")
|
||||||
|
local critical_vars=("STATUS_API_PORT" "STATUS_API_HOST")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${YELLOW}⚠ No specific environment variables defined for $service_name${NC}"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Vérifier chaque variable critique
|
||||||
|
local missing_vars=()
|
||||||
|
for var in "${critical_vars[@]}"; do
|
||||||
|
if ! grep -q "^${var}=" /home/debian/4NK_env/.env.master; then
|
||||||
|
missing_vars+=("$var")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ${#missing_vars[@]} -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ All critical environment variables present for $display_name${NC}"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ Missing critical environment variables for $display_name:${NC}"
|
||||||
|
for var in "${missing_vars[@]}"; do
|
||||||
|
echo -e "${RED} - $var${NC}"
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Fonction pour démarrer un service
|
# Fonction pour démarrer un service
|
||||||
start_service() {
|
start_service() {
|
||||||
local service_name=$1
|
local service_name=$1
|
||||||
local display_name=$2
|
local display_name=$2
|
||||||
|
|
||||||
|
# Vérifier les variables d'environnement avant de démarrer
|
||||||
|
if ! check_service_env "$service_name" "$display_name"; then
|
||||||
|
echo -e "${RED}✗ Environment check failed for $display_name. Continuing anyway...${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
print_message "Starting $display_name..."
|
print_message "Starting $display_name..."
|
||||||
docker compose --env-file .env.master up -d "$service_name"
|
if ! docker compose --env-file /home/debian/4NK_env/.env.master up -d "$service_name"; then
|
||||||
|
echo -e "${YELLOW}⚠ Failed to start $display_name, continuing with next service...${NC}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Attendre que le conteneur soit créé
|
# Attendre que le conteneur soit créé
|
||||||
sleep 2
|
sleep 2
|
||||||
@ -212,7 +291,7 @@ echo
|
|||||||
|
|
||||||
# Arrêter les services existants
|
# Arrêter les services existants
|
||||||
print_message "Stopping existing services..."
|
print_message "Stopping existing services..."
|
||||||
docker compose --env-file .env.master down --remove-orphans >/dev/null 2>&1 || true
|
docker compose --env-file /home/debian/4NK_env/.env.master down --remove-orphans >/dev/null 2>&1 || true
|
||||||
|
|
||||||
# Ordre de démarrage logique
|
# Ordre de démarrage logique
|
||||||
services=(
|
services=(
|
||||||
@ -245,7 +324,7 @@ done
|
|||||||
echo -e "${GREEN}🎉 All services started successfully!${NC}"
|
echo -e "${GREEN}🎉 All services started successfully!${NC}"
|
||||||
echo
|
echo
|
||||||
echo -e "${BLUE}Final status:${NC}"
|
echo -e "${BLUE}Final status:${NC}"
|
||||||
docker compose --env-file .env.master ps
|
docker compose --env-file /home/debian/4NK_env/.env.master ps
|
||||||
|
|
||||||
# Calculer le temps total
|
# Calculer le temps total
|
||||||
end_time=$(date +%s)
|
end_time=$(date +%s)
|
||||||
@ -257,7 +336,7 @@ echo
|
|||||||
echo -e "${GREEN}Total startup time: ${minutes}m ${seconds}s${NC}"
|
echo -e "${GREEN}Total startup time: ${minutes}m ${seconds}s${NC}"
|
||||||
echo
|
echo
|
||||||
echo -e "${BLUE}Useful commands:${NC}"
|
echo -e "${BLUE}Useful commands:${NC}"
|
||||||
echo -e " ${YELLOW}docker compose --env-file .env.master logs -f${NC} # Voir les logs"
|
echo -e " ${YELLOW}docker compose --env-file /home/debian/4NK_env/.env.master logs -f${NC} # Voir les logs"
|
||||||
echo -e " ${YELLOW}docker compose --env-file .env.master down${NC} # Arrêter les services"
|
echo -e " ${YELLOW}docker compose --env-file /home/debian/4NK_env/.env.master down${NC} # Arrêter les services"
|
||||||
echo -e " ${YELLOW}docker compose --env-file .env.master ps${NC} # Voir le statut"
|
echo -e " ${YELLOW}docker compose --env-file /home/debian/4NK_env/.env.master ps${NC} # Voir le statut"
|
||||||
echo
|
echo
|
||||||
|
@ -24,7 +24,7 @@ echo
|
|||||||
echo -e "${YELLOW}Updating Docker images...${NC}"
|
echo -e "${YELLOW}Updating Docker images...${NC}"
|
||||||
|
|
||||||
# Mettre à jour les images
|
# Mettre à jour les images
|
||||||
docker compose --env-file .env.master pull
|
docker compose --env-file /home/debian/4NK_env/.env.master pull
|
||||||
|
|
||||||
echo -e "${GREEN}✅ Images updated successfully!${NC}"
|
echo -e "${GREEN}✅ Images updated successfully!${NC}"
|
||||||
echo
|
echo
|
||||||
|
242
scripts/lecoffre_node/url-health-check.sh
Executable file
242
scripts/lecoffre_node/url-health-check.sh
Executable file
@ -0,0 +1,242 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# LeCoffre Node - Script de vérification des URLs de santé
|
||||||
|
# Vérifie tous les endpoints internes et externes du système
|
||||||
|
# Utilisé par les scripts de backup et de production
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Couleurs pour l'affichage
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Compteurs
|
||||||
|
TOTAL_URLS=0
|
||||||
|
ACCESSIBLE_URLS=0
|
||||||
|
FAILED_URLS=0
|
||||||
|
|
||||||
|
# Fonction pour afficher un message avec timestamp
|
||||||
|
print_message() {
|
||||||
|
echo -e "${BLUE}[$(date '+%H:%M:%S')]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour tester une URL
|
||||||
|
test_url() {
|
||||||
|
local url="$1"
|
||||||
|
local description="$2"
|
||||||
|
local expected_codes_csv="${3:-200}"
|
||||||
|
local timeout="${4:-10}"
|
||||||
|
|
||||||
|
TOTAL_URLS=$((TOTAL_URLS + 1))
|
||||||
|
|
||||||
|
print_message "Testing: $description"
|
||||||
|
echo -e " ${CYAN}URL: $url${NC}"
|
||||||
|
|
||||||
|
# Test de connectivité
|
||||||
|
local response=$(curl -s -o /dev/null -w '%{http_code}' --max-time "$timeout" "$url" 2>/dev/null || echo "000")
|
||||||
|
local curl_exit_code=$?
|
||||||
|
|
||||||
|
# Support multiple acceptable codes, comma-separated
|
||||||
|
local ok=false
|
||||||
|
IFS=',' read -r -a expected_array <<< "$expected_codes_csv"
|
||||||
|
for code in "${expected_array[@]}"; do
|
||||||
|
if [ "$response" = "$code" ]; then
|
||||||
|
ok=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ok" = true ]; then
|
||||||
|
echo -e " ${GREEN}✓${NC} Status: HTTP $response - Accessible"
|
||||||
|
ACCESSIBLE_URLS=$((ACCESSIBLE_URLS + 1))
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e " ${RED}✗${NC} Status: HTTP $response - Not accessible"
|
||||||
|
if [ $curl_exit_code -ne 0 ]; then
|
||||||
|
echo -e " ${RED} Curl exit code: $curl_exit_code${NC}"
|
||||||
|
fi
|
||||||
|
FAILED_URLS=$((FAILED_URLS + 1))
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour tester un WebSocket
|
||||||
|
test_websocket() {
|
||||||
|
local ws_url="$1"
|
||||||
|
local description="$2"
|
||||||
|
local timeout="${3:-5}"
|
||||||
|
|
||||||
|
TOTAL_URLS=$((TOTAL_URLS + 1))
|
||||||
|
|
||||||
|
print_message "Testing WebSocket: $description"
|
||||||
|
echo -e " ${CYAN}URL: $ws_url${NC}"
|
||||||
|
|
||||||
|
# Test WebSocket avec wscat
|
||||||
|
local ws_test=$(timeout "$timeout" wscat -c "$ws_url" --no-color 2>/dev/null && echo "connected" || echo "failed")
|
||||||
|
|
||||||
|
if [ "$ws_test" = "connected" ]; then
|
||||||
|
echo -e " ${GREEN}✓${NC} Status: Connected"
|
||||||
|
ACCESSIBLE_URLS=$((ACCESSIBLE_URLS + 1))
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e " ${RED}✗${NC} Status: Not connected"
|
||||||
|
FAILED_URLS=$((FAILED_URLS + 1))
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour tester un endpoint API avec POST
|
||||||
|
test_api_post() {
|
||||||
|
local url="$1"
|
||||||
|
local description="$2"
|
||||||
|
local post_data="$3"
|
||||||
|
local expected_codes_csv="${4:-200}"
|
||||||
|
local timeout="${5:-10}"
|
||||||
|
|
||||||
|
TOTAL_URLS=$((TOTAL_URLS + 1))
|
||||||
|
|
||||||
|
print_message "Testing API POST: $description"
|
||||||
|
echo -e " ${CYAN}URL: $url${NC}"
|
||||||
|
echo -e " ${CYAN}Data: $post_data${NC}"
|
||||||
|
|
||||||
|
# Test de l'endpoint avec POST
|
||||||
|
local response=$(curl -s -o /dev/null -w '%{http_code}' --max-time "$timeout" -X POST \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "$post_data" \
|
||||||
|
"$url" 2>/dev/null || echo "000")
|
||||||
|
local curl_exit_code=$?
|
||||||
|
|
||||||
|
# Support multiple acceptable codes, comma-separated
|
||||||
|
local ok=false
|
||||||
|
IFS=',' read -r -a expected_array <<< "$expected_codes_csv"
|
||||||
|
for code in "${expected_array[@]}"; do
|
||||||
|
if [ "$response" = "$code" ]; then
|
||||||
|
ok=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ok" = true ]; then
|
||||||
|
echo -e " ${GREEN}✓${NC} Status: HTTP $response - API accessible"
|
||||||
|
ACCESSIBLE_URLS=$((ACCESSIBLE_URLS + 1))
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e " ${RED}✗${NC} Status: HTTP $response - API not accessible"
|
||||||
|
if [ $curl_exit_code -ne 0 ]; then
|
||||||
|
echo -e " ${RED} Curl exit code: $curl_exit_code${NC}"
|
||||||
|
fi
|
||||||
|
FAILED_URLS=$((FAILED_URLS + 1))
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo -e "${BLUE} LeCoffre Node - URL Health Check${NC}"
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo
|
||||||
|
|
||||||
|
print_message "Starting URL health check..."
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# URLs INTERNES (Services Docker)
|
||||||
|
# ========================================
|
||||||
|
echo -e "${CYAN}=== URLs INTERNES (Services Docker) ===${NC}"
|
||||||
|
|
||||||
|
# Services de base
|
||||||
|
test_url "http://localhost:8000/tweaks/1" "BlindBit Oracle API" "200" 5
|
||||||
|
test_url "http://localhost:8081/health" "SDK Storage Health" "200" 5
|
||||||
|
test_url "http://localhost:8091/" "SDK Relay WebSocket Interface" "200" 5
|
||||||
|
test_url "http://localhost:8090/" "SDK Relay HTTP Interface" "200" 5
|
||||||
|
|
||||||
|
# Services applicatifs
|
||||||
|
test_url "http://localhost:3004/" "LeCoffre Frontend (Root)" "200,301,302,307,308" 10
|
||||||
|
test_url "http://localhost:3004/login" "LeCoffre Frontend Login" "200,301,302,307,308" 10
|
||||||
|
test_url "http://localhost:3004/lecoffre/" "LeCoffre Frontend App" "200,301,302,307,308" 10
|
||||||
|
test_url "http://localhost:3003/" "IHM Client Interface" "200" 10
|
||||||
|
|
||||||
|
# Services de monitoring
|
||||||
|
test_url "http://localhost:3005/api/health" "Grafana Health Check" "200" 5
|
||||||
|
test_url "http://localhost:3005/" "Grafana Dashboard" "200,301,302" 10
|
||||||
|
test_url "http://localhost:3100/ready" "Loki Health Check" "200" 5
|
||||||
|
test_url "http://localhost:3006/api" "Status API" "200" 5
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# URLs EXTERNES (Domaine Public)
|
||||||
|
# ========================================
|
||||||
|
echo -e "${CYAN}=== URLs EXTERNES (Domaine Public) ===${NC}"
|
||||||
|
|
||||||
|
# URLs principales
|
||||||
|
test_url "https://dev4.4nkweb.com/" "Site Principal" "200,301,302" 15
|
||||||
|
test_url "https://dev4.4nkweb.com/status/" "Page de Statut" "200" 15
|
||||||
|
test_url "https://dev4.4nkweb.com/grafana/" "Dashboard Grafana" "200,301,302" 15
|
||||||
|
test_url "https://dev4.4nkweb.com/lecoffre/" "Application LeCoffre" "200,301,302" 15
|
||||||
|
|
||||||
|
# URLs d'authentification
|
||||||
|
test_url "https://dev4.4nkweb.com/lecoffre/login" "Page de Login LeCoffre" "200,301,302" 15
|
||||||
|
test_url "https://dev4.4nkweb.com/lecoffre/authorized-client" "Callback d'authentification" "200,301,302" 15
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# APIs EXTERNES (Backend Services)
|
||||||
|
# ========================================
|
||||||
|
echo -e "${CYAN}=== APIs EXTERNES (Backend Services) ===${NC}"
|
||||||
|
|
||||||
|
# API Backend principal
|
||||||
|
test_url "https://dev3.4nkweb.com/api/v1/health" "API Backend Health" "200" 10
|
||||||
|
test_url "https://dev3.4nkweb.com/api/v1/status" "API Backend Status" "200" 10
|
||||||
|
|
||||||
|
# API IdNot (authentification)
|
||||||
|
test_api_post "https://dev3.4nkweb.com/api/v1/idnot/state" \
|
||||||
|
"IdNot State Endpoint" \
|
||||||
|
'{"next_url":"https://dev4.4nkweb.com/authorized-client"}' \
|
||||||
|
"200" 10
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# WebSockets EXTERNES
|
||||||
|
# ========================================
|
||||||
|
echo -e "${CYAN}=== WebSockets EXTERNES ===${NC}"
|
||||||
|
|
||||||
|
test_websocket "wss://dev3.4nkweb.com/ws/" "Bootstrap Relay WebSocket" 5
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# SERVICES EXTERNES (Dépendances)
|
||||||
|
# ========================================
|
||||||
|
echo -e "${CYAN}=== SERVICES EXTERNES (Dépendances) ===${NC}"
|
||||||
|
|
||||||
|
# Mempool externe
|
||||||
|
test_url "https://mempool2.4nkweb.com/" "Mempool Signet Explorer" "200,301,302" 10
|
||||||
|
|
||||||
|
# IdNot Service (authentification)
|
||||||
|
test_url "https://qual-connexion.idnot.fr/" "Service IdNot" "200,301,302" 10
|
||||||
|
test_url "https://qual-connexion.idnot.fr/IdPOAuth2/authorize/idnot_idp_v1" "IdNot Authorization Endpoint" "200,301,302" 10
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# ========================================
|
||||||
|
# RÉSUMÉ FINAL
|
||||||
|
# ========================================
|
||||||
|
echo -e "${CYAN}=== RÉSUMÉ FINAL ===${NC}"
|
||||||
|
echo -e "${BLUE}Total URLs testées: $TOTAL_URLS${NC}"
|
||||||
|
echo -e "${GREEN}URLs accessibles: $ACCESSIBLE_URLS${NC}"
|
||||||
|
echo -e "${RED}URLs échouées: $FAILED_URLS${NC}"
|
||||||
|
|
||||||
|
if [ $FAILED_URLS -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}🎉 Toutes les URLs sont accessibles !${NC}"
|
||||||
|
exit 0
|
||||||
|
elif [ $FAILED_URLS -lt $((TOTAL_URLS / 2)) ]; then
|
||||||
|
echo -e "${YELLOW}⚠️ Certaines URLs ne sont pas accessibles, mais la majorité fonctionne.${NC}"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ Trop d'URLs ne sont pas accessibles. Vérifiez la configuration.${NC}"
|
||||||
|
exit 2
|
||||||
|
fi
|
@ -1 +1 @@
|
|||||||
Subproject commit 0133e31bc4ebb0faf5536a388d25f7ba0c85c1c3
|
Subproject commit 51e9b6017310f91a345f5d4f9f850ef694478e98
|
@ -1 +1 @@
|
|||||||
Subproject commit 4dad51241c559f9895f3f986b5deea7484189e88
|
Subproject commit 06879e4fed871b589814a1fc424c87054950c202
|
Loading…
x
Reference in New Issue
Block a user