163 lines
5.0 KiB
Bash
Executable File
163 lines
5.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# verify_config_writing.sh
|
|
# Script de vérification de l'écriture effective des fichiers de configuration
|
|
# Basé sur REX_CONFIGURATION_MANAGEMENT.md
|
|
|
|
set -e
|
|
|
|
# Couleurs pour les logs
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Fonctions de logging
|
|
log() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# Fonction de vérification d'un fichier de configuration
|
|
verify_config_file() {
|
|
local file="$1"
|
|
local expected_content="$2"
|
|
local description="$3"
|
|
|
|
log "Vérification de $file ($description)..."
|
|
|
|
if [ -f "$file" ]; then
|
|
if grep -q "$expected_content" "$file"; then
|
|
log_success "$file contient '$expected_content'"
|
|
return 0
|
|
else
|
|
log_error "$file ne contient pas '$expected_content'"
|
|
return 1
|
|
fi
|
|
else
|
|
log_error "$file n'existe pas"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction de vérification de la syntaxe
|
|
verify_syntax() {
|
|
local file="$1"
|
|
|
|
case "$file" in
|
|
*.yml|*.yaml)
|
|
log "Vérification de la syntaxe YAML pour $file..."
|
|
if command -v yq >/dev/null 2>&1; then
|
|
if yq eval '.' "$file" >/dev/null 2>&1; then
|
|
log_success "Syntaxe YAML valide pour $file"
|
|
return 0
|
|
else
|
|
log_error "Syntaxe YAML invalide pour $file"
|
|
return 1
|
|
fi
|
|
else
|
|
log_warning "yq non installé, impossible de vérifier la syntaxe YAML"
|
|
return 0
|
|
fi
|
|
;;
|
|
*.json)
|
|
log "Vérification de la syntaxe JSON pour $file..."
|
|
if command -v jq >/dev/null 2>&1; then
|
|
if jq '.' "$file" >/dev/null 2>&1; then
|
|
log_success "Syntaxe JSON valide pour $file"
|
|
return 0
|
|
else
|
|
log_error "Syntaxe JSON invalide pour $file"
|
|
return 1
|
|
fi
|
|
else
|
|
log_warning "jq non installé, impossible de vérifier la syntaxe JSON"
|
|
return 0
|
|
fi
|
|
;;
|
|
*.conf)
|
|
log "Vérification de la syntaxe pour $file..."
|
|
# Vérification basique : fichier non vide et lisible
|
|
if [ -s "$file" ] && [ -r "$file" ]; then
|
|
log_success "Fichier $file est lisible et non vide"
|
|
return 0
|
|
else
|
|
log_error "Fichier $file est vide ou non lisible"
|
|
return 1
|
|
fi
|
|
;;
|
|
*)
|
|
log "Vérification basique pour $file..."
|
|
if [ -s "$file" ] && [ -r "$file" ]; then
|
|
log_success "Fichier $file est lisible et non vide"
|
|
return 0
|
|
else
|
|
log_error "Fichier $file est vide ou non lisible"
|
|
return 1
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Fonction principale
|
|
main() {
|
|
log "=== Vérification de l'écriture effective des configurations ==="
|
|
|
|
local errors=0
|
|
|
|
# Vérification des fichiers de configuration critiques
|
|
log "Vérification des fichiers de configuration critiques..."
|
|
|
|
# 1. Configuration du relai
|
|
verify_config_file "relay/sdk_relay.conf" "bootstrap_url=" "Configuration bootstrap" || ((errors++))
|
|
verify_config_file "relay/sdk_relay.conf" "sp_address=" "Adresse SP" || ((errors++))
|
|
|
|
# 2. Variables d'environnement
|
|
verify_config_file ".env" "RELAY_URLS=" "URLs des relais" || ((errors++))
|
|
verify_config_file ".env" "SIGNER_WS_URL=" "URL WebSocket du signer" || ((errors++))
|
|
|
|
# 3. Configuration Docker Compose
|
|
verify_config_file "docker-compose.yml" "services:" "Services Docker" || ((errors++))
|
|
verify_config_file "docker-compose.yml" "healthcheck:" "Healthchecks" || ((errors++))
|
|
|
|
# 4. Configuration du miner
|
|
verify_config_file "miner/.env" "RPC_HOST=" "Configuration RPC" || ((errors++))
|
|
|
|
# Vérification de la syntaxe
|
|
log "Vérification de la syntaxe des fichiers..."
|
|
|
|
verify_syntax "docker-compose.yml" || ((errors++))
|
|
verify_syntax "miner/.env" || ((errors++))
|
|
|
|
# Vérification des permissions
|
|
log "Vérification des permissions..."
|
|
|
|
local config_files=("relay/sdk_relay.conf" ".env" "docker-compose.yml" "miner/.env")
|
|
for file in "${config_files[@]}"; do
|
|
if [ -f "$file" ]; then
|
|
if [ -r "$file" ]; then
|
|
log_success "Permissions de lecture OK pour $file"
|
|
else
|
|
log_error "Permissions de lecture insuffisantes pour $file"
|
|
((errors++))
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Résumé
|
|
echo ""
|
|
if [ $errors -eq 0 ]; then
|
|
log_success "=== Toutes les vérifications ont réussi ==="
|
|
exit 0
|
|
else
|
|
log_error "=== $errors erreur(s) détectée(s) ==="
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Exécution du script
|
|
main "$@"
|
|
|
|
|
|
|