144 lines
4.5 KiB
Bash
Executable File
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
|
|
|