#!/bin/bash # Script pour mettre à jour les fichiers de configuration # à partir des variables définies dans /home/debian/4NK_env/confs/.env set -e # 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 pour afficher les messages log_info() { 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" } # Vérifier que le fichier .env existe ENV_FILE="/home/debian/4NK_env/env/.env" if [[ ! -f "$ENV_FILE" ]]; then log_error "Le fichier $ENV_FILE n'existe pas!" log_error "Veuillez créer ce fichier avec les variables nécessaires avant d'exécuter le script." exit 1 fi # Charger les variables d'environnement log_info "Chargement des variables depuis $ENV_FILE" source "$ENV_FILE" # Fonction pour remplacer une valeur dans un fichier replace_in_file() { local file="$1" local pattern="$2" local replacement="$3" local description="$4" if [[ -f "$file" ]]; then # Utiliser sed pour remplacer la ligne sed -i "s|$pattern|$replacement|g" "$file" log_success "Mis à jour: $description dans $(basename "$file")" else log_warning "Fichier non trouvé: $file" fi } # Fonction pour ajouter ou modifier une ligne dans un fichier set_config_value() { local file="$1" local key="$2" local value="$3" local description="$4" if [[ -f "$file" ]]; then # Vérifier si la clé existe déjà if grep -q "^$key=" "$file" 2>/dev/null || grep -q "^$key " "$file" 2>/dev/null; then # Remplacer la ligne existante sed -i "/^$key[ =]/c\\$key=$value" "$file" else # Ajouter la ligne à la fin du fichier echo "$key=$value" >> "$file" fi log_success "Mis à jour: $description dans $(basename "$file")" else log_warning "Fichier non trouvé: $file" fi } log_info "Début de la mise à jour des configurations..." # 1. Configuration Bitcoin log_info "Mise à jour de bitcoin.conf..." BITCOIN_CONF="/home/debian/4NK_env/confs/bitcoin/bitcoin.conf" replace_in_file "$BITCOIN_CONF" "datadir=.*" "datadir=$BITCOIN_DATA_DIR" "datadir" replace_in_file "$BITCOIN_CONF" "zmqpubrawtx=.*" "zmqpubrawtx=tcp://$BITCOIN_BIND:$BITCOIN_ZMQPUBRAWTX_PORT" "zmqpubrawtx" replace_in_file "$BITCOIN_CONF" "zmqpubhashblock=.*" "zmqpubhashblock=tcp://$BITCOIN_BIND:$BITCOIN_ZMQPBUBHASHBLOCK_PORT" "zmqpubhashblock" replace_in_file "$BITCOIN_CONF" "bind=.*" "bind=$BITCOIN_BIND:$BITCOIN_SIGNET_P2P_PORT" "bind" replace_in_file "$BITCOIN_CONF" "rpcbind=.*" "rpcbind=$BITCOIN_BIND:$BITCOIN_SIGNET_RPC_PORT" "rpcbind" # 2. Configuration Blindbit Oracle log_info "Mise à jour de blindbit.toml..." BLINDBIT_CONF="/home/debian/4NK_env/confs/blindbit-oracle/blindbit.toml" replace_in_file "$BLINDBIT_CONF" 'host = ".*"' 'host = "0.0.0.0:'$BLINDBIT_PORT'"' "host" replace_in_file "$BLINDBIT_CONF" 'rpc_endpoint = ".*"' 'rpc_endpoint = "http://'$BITCOIN_DOCKER_HOST:$BITCOIN_SIGNET_RPC_PORT'"' "rpc_endpoint" replace_in_file "$BLINDBIT_CONF" 'cookie_path = ".*"' 'cookie_path = "'$BITCOIN_DATA_DIR'/signet/.cookie"' "cookie_path" # 3. Configuration Grafana log_info "Mise à jour de grafana.ini..." GRAFANA_CONF="/home/debian/4NK_env/confs/grafana/grafana.ini" replace_in_file "$GRAFANA_CONF" "root_url = .*" "root_url = $ROOT_URL/grafana/" "root_url" # 4. Configuration Loki log_info "Mise à jour de loki-config.yaml..." LOKI_CONF="/home/debian/4NK_env/confs/loki/loki-config.yaml" replace_in_file "$LOKI_CONF" "http_listen_port:.*" "http_listen_port: $LOKI_HTTP_LISTEN_PORT" "http_listen_port" # 5. Configuration Promtail log_info "Mise à jour de promtail.yml..." PROMTAIL_CONF="/home/debian/4NK_env/confs/promtail/promtail.yml" replace_in_file "$PROMTAIL_CONF" "url: http://.*" "url: http://$LOKI_DOCKER_HOST:$LOKI_HTTP_LISTEN_PORT/loki/api/v1/push" "url" replace_in_file "$PROMTAIL_CONF" "/home/debian/4NK_env/" "$ROOT_DIR/" "__path__" # 6. Configuration SDK Relay log_info "Mise à jour de sdk_relay.conf..." RELAY_CONF="/home/debian/4NK_env/confs/relay/sdk_relay.conf" set_config_value "$RELAY_CONF" "core_url" "http://$BITCOIN_DOCKER_HOST:$BITCOIN_SIGNET_RPC_PORT" "core_url" set_config_value "$RELAY_CONF" "ws_url" "0.0.0.0:$RELAY_PORT" "ws_url" set_config_value "$RELAY_CONF" "wallet_name" "$BITCOIN_WALLET_NAME" "wallet_name" set_config_value "$RELAY_CONF" "blindbit_url" "http://$BLINDBIT_DOCKER_NAME:$BLINDBIT_PORT" "blindbit_url" set_config_value "$RELAY_CONF" "zmq_url" "tcp://$BITCOIN_BIND:$BITCOIN_ZMQPBUBHASHBLOCK_PORT" "zmq_url" set_config_value "$RELAY_CONF" "storage" "https://dev4.4nkweb.com/storage" "storage" set_config_value "$RELAY_CONF" "data_dir" "$ROOT_DIR/data" "data_dir" set_config_value "$RELAY_CONF" "bitcoin_data_dir" "$BITCOIN_DATA_DIR" "bitcoin_data_dir" set_config_value "$RELAY_CONF" "bootstrap_url" "wss://$BOOTSTRAP_HOST/ws" "bootstrap_url" log_success "Mise à jour des configurations terminée!" log_info "Seuls les fichiers de configuration principaux ont été modifiés" log_warning "Vérifiez les configurations avant de redémarrer les services" # Afficher un résumé des fichiers modifiés echo "" log_info "Résumé des fichiers modifiés:" echo " - $BITCOIN_CONF" echo " - $BLINDBIT_CONF" echo " - $GRAFANA_CONF" echo " - $LOKI_CONF" echo " - $PROMTAIL_CONF" echo " - $RELAY_CONF" echo "" log_info "Les fichiers .env existants n'ont PAS été modifiés pour préserver la sécurité"