4NK_env/scripts/update-configs.sh

149 lines
5.5 KiB
Bash
Executable File

#!/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é"