4NK_node/scripts/setup-bitcoin-dirs.sh
2025-09-12 09:04:58 +02:00

144 lines
4.5 KiB
Bash
Executable File

#!/bin/bash
# Script de vérification et création des dossiers Bitcoin pour 4NK_node
# Usage: ./scripts/setup-bitcoin-dirs.sh
#
# Ce script s'assure que tous les dossiers nécessaires existent
# avant le démarrage des services Bitcoin et dépendants.
set -euo pipefail
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
BITCOIN_DATA_DIR="$PROJECT_ROOT/modules/bitcoin/data"
BITCOIN_CONF_DIR="$PROJECT_ROOT/modules/bitcoin/conf"
BITCOIN_LOGS_DIR="$PROJECT_ROOT/modules/bitcoin/logs"
# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonction de logging
log() {
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
}
log_success() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] ✓${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] ⚠${NC} $1"
}
log_error() {
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ✗${NC} $1"
}
# Fonction pour créer un dossier s'il n'existe pas
ensure_directory() {
local dir="$1"
local description="$2"
if [[ ! -d "$dir" ]]; then
log "Création du répertoire $description: $dir"
mkdir -p "$dir"
log_success "Répertoire $description créé: $dir"
else
log_success "Répertoire $description existe déjà: $dir"
fi
# Vérifier les permissions
if [[ ! -r "$dir" ]] || [[ ! -w "$dir" ]]; then
log_warning "Correction des permissions pour: $dir"
chmod 755 "$dir"
fi
}
# Fonction pour vérifier et créer les fichiers de configuration
ensure_config_files() {
local conf_dir="$1"
local example_file="$2"
local target_file="$3"
if [[ -d "$target_file" ]]; then
log_warning "Suppression du répertoire incorrect: $target_file"
rm -rf "$target_file"
fi
if [[ ! -f "$target_file" ]]; then
if [[ -f "$example_file" ]]; then
log "Création du fichier de configuration à partir de l'exemple: $target_file"
cp "$example_file" "$target_file"
log_success "Fichier de configuration créé: $target_file"
else
log_error "Fichier exemple manquant: $example_file"
return 1
fi
else
log_success "Fichier de configuration existe: $target_file"
fi
}
main() {
log "=== Setup des dossiers Bitcoin pour 4NK_node ==="
# Vérifier que nous sommes dans le bon répertoire
if [[ ! -f "$PROJECT_ROOT/docker-compose.yml" ]]; then
log_error "Fichier docker-compose.yml non trouvé. Êtes-vous dans le bon répertoire ?"
exit 1
fi
log "Répertoire du projet: $PROJECT_ROOT"
# Créer les dossiers principaux Bitcoin
ensure_directory "$BITCOIN_DATA_DIR" "données Bitcoin"
ensure_directory "$BITCOIN_LOGS_DIR" "logs Bitcoin"
# Créer les sous-dossiers spécifiques Bitcoin
ensure_directory "$BITCOIN_DATA_DIR/wallets" "dossier wallets Bitcoin"
ensure_directory "$BITCOIN_DATA_DIR/signet" "dossier signet Bitcoin"
ensure_directory "$BITCOIN_DATA_DIR/blocks" "dossier blocks Bitcoin"
ensure_directory "$BITCOIN_DATA_DIR/chainstate" "dossier chainstate Bitcoin"
# Vérifier les fichiers de configuration
if [[ -d "$BITCOIN_CONF_DIR" ]]; then
ensure_config_files "$BITCOIN_CONF_DIR" "$BITCOIN_CONF_DIR/bitcoin.conf.exemple" "$BITCOIN_CONF_DIR/bitcoin.conf"
else
log_warning "Répertoire de configuration Bitcoin manquant: $BITCOIN_CONF_DIR"
fi
# Vérifier les dossiers des autres services qui pourraient avoir des problèmes similaires
log "=== Vérification des autres services ==="
# Vérifier les fichiers de configuration des relay
for relay_num in 1 2 3; do
relay_conf_dir="$PROJECT_ROOT/modules/sdk_relay${relay_num}/conf"
if [[ -d "$relay_conf_dir" ]]; then
ensure_config_files "$relay_conf_dir" "$relay_conf_dir/sdk_relay${relay_num}.conf.exemple" "$relay_conf_dir/sdk_relay${relay_num}.conf"
fi
done
# Vérifier le fichier de configuration ihm_client
ihm_conf_dir="$PROJECT_ROOT/modules/ihm_client/conf"
if [[ -d "$ihm_conf_dir" ]]; then
ensure_config_files "$ihm_conf_dir" "$ihm_conf_dir/.env.exemple" "$ihm_conf_dir/.env"
fi
log_success "=== Setup terminé avec succès ==="
log "Tous les dossiers et fichiers de configuration Bitcoin sont prêts."
log "Vous pouvez maintenant lancer: docker compose up -d"
return 0
}
# Exécution du script
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
main "$@"
fi