
Some checks failed
CI - 4NK_node / Code Quality (push) Failing after 46s
CI - 4NK_node / Unit Tests (push) Failing after 30s
CI - 4NK_node / Integration Tests (push) Failing after 11s
CI - 4NK_node / Security Tests (push) Failing after 29s
CI - 4NK_node / Docker Build & Test (push) Failing after 10s
CI - 4NK_node / Documentation Tests (push) Failing after 3s
CI - 4NK_node / Security Audit (push) Successful in 3s
CI - 4NK_node / Release Guard (push) Has been skipped
CI - 4NK_node / Performance Tests (push) Successful in 29s
CI - 4NK_node / Notify (push) Failing after 2s
CI - 4NK_node / Publish Release (push) Has been skipped
178 lines
5.6 KiB
Bash
Executable File
178 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de gestion de l'authentification et des fichiers partagés
|
|
# pour la stack 4NK_node
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
echo "🔐 Gestion de l'authentification et des fichiers partagés 4NK_node"
|
|
|
|
# Fonction pour vérifier si un conteneur est en cours d'exécution
|
|
container_running() {
|
|
docker ps --format "table {{.Names}}" | grep -q "$1"
|
|
}
|
|
|
|
# Fonction pour attendre qu'un conteneur soit prêt
|
|
wait_for_container() {
|
|
local container_name="$1"
|
|
local max_wait=60
|
|
local wait_time=0
|
|
|
|
echo "⏳ Attente que le conteneur $container_name soit prêt..."
|
|
|
|
while [ $wait_time -lt $max_wait ]; do
|
|
if container_running "$container_name"; then
|
|
echo "✅ Conteneur $container_name est prêt"
|
|
return 0
|
|
fi
|
|
sleep 2
|
|
wait_time=$((wait_time + 2))
|
|
done
|
|
|
|
echo "❌ Timeout en attendant le conteneur $container_name"
|
|
return 1
|
|
}
|
|
|
|
# Fonction pour vérifier et créer le fichier .cookie
|
|
setup_bitcoin_cookie() {
|
|
echo "🔍 Configuration du fichier .cookie Bitcoin..."
|
|
|
|
if ! container_running "4nk-bitcoin"; then
|
|
echo "❌ Le conteneur Bitcoin n'est pas en cours d'exécution"
|
|
return 1
|
|
fi
|
|
|
|
# Attendre que Bitcoin soit complètement démarré
|
|
wait_for_container "4nk-bitcoin"
|
|
sleep 10
|
|
|
|
# Vérifier si le fichier .cookie existe
|
|
if docker exec 4nk-bitcoin test -f /home/bitcoin/.bitcoin/signet/.cookie; then
|
|
echo "✅ Fichier .cookie Bitcoin trouvé"
|
|
|
|
# Afficher les informations du cookie
|
|
echo "📋 Informations du fichier .cookie :"
|
|
docker exec 4nk-bitcoin ls -la /home/bitcoin/.bitcoin/signet/.cookie
|
|
docker exec 4nk-bitcoin cat /home/bitcoin/.bitcoin/signet/.cookie | head -1
|
|
|
|
# Vérifier les permissions
|
|
local perms=$(docker exec 4nk-bitcoin stat -c "%a" /home/bitcoin/.bitcoin/signet/.cookie)
|
|
echo "🔐 Permissions du fichier .cookie : $perms"
|
|
|
|
# S'assurer que les permissions sont correctes (600)
|
|
if [ "$perms" != "600" ]; then
|
|
echo "🔧 Correction des permissions du fichier .cookie..."
|
|
docker exec 4nk-bitcoin chmod 600 /home/bitcoin/.bitcoin/signet/.cookie
|
|
fi
|
|
|
|
return 0
|
|
else
|
|
echo "❌ Fichier .cookie Bitcoin non trouvé"
|
|
echo "📋 Logs Bitcoin récents :"
|
|
docker logs 4nk-bitcoin --tail 10
|
|
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction pour vérifier l'accès au fichier .cookie depuis d'autres services
|
|
verify_cookie_access() {
|
|
echo "🔍 Vérification de l'accès au fichier .cookie depuis d'autres services..."
|
|
|
|
local services=("4nk-blindbit" "4nk-sdk-relay1" "4nk-sdk-relay2" "4nk-sdk-relay3" "4nk-sdk-storage" "4nk-sdk-signer")
|
|
|
|
for service in "${services[@]}"; do
|
|
if container_running "$service"; then
|
|
echo "🔍 Vérification de $service..."
|
|
|
|
if docker exec "$service" test -f /home/bitcoin/.bitcoin/signet/.cookie; then
|
|
echo "✅ $service peut accéder au fichier .cookie"
|
|
|
|
# Vérifier les permissions
|
|
local perms=$(docker exec "$service" stat -c "%a" /home/bitcoin/.bitcoin/signet/.cookie)
|
|
echo " Permissions : $perms"
|
|
|
|
# Vérifier la lisibilité
|
|
if docker exec "$service" test -r /home/bitcoin/.bitcoin/signet/.cookie; then
|
|
echo " ✅ Fichier lisible"
|
|
else
|
|
echo " ❌ Fichier non lisible"
|
|
fi
|
|
else
|
|
echo "❌ $service ne peut pas accéder au fichier .cookie"
|
|
fi
|
|
else
|
|
echo "⏸️ $service n'est pas en cours d'exécution"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Fonction pour tester la connectivité RPC
|
|
test_rpc_connectivity() {
|
|
echo "🔍 Test de la connectivité RPC..."
|
|
|
|
if ! container_running "4nk-bitcoin"; then
|
|
echo "❌ Bitcoin n'est pas en cours d'exécution"
|
|
return 1
|
|
fi
|
|
|
|
# Attendre que Bitcoin soit prêt
|
|
sleep 5
|
|
|
|
# Test de la connectivité RPC via curl
|
|
echo "📡 Test de la connectivité RPC via HTTP..."
|
|
if docker exec 4nk-bitcoin curl -s --connect-timeout 5 http://localhost:18443 > /dev/null 2>&1; then
|
|
echo "✅ Connectivité RPC HTTP OK"
|
|
return 0
|
|
else
|
|
echo "❌ Connectivité RPC HTTP échouée"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Fonction pour afficher le statut des volumes partagés
|
|
show_shared_volumes() {
|
|
echo "🔍 Statut des volumes partagés..."
|
|
|
|
echo "📊 Volumes Docker :"
|
|
docker volume ls | grep 4nk_node || echo "Aucun volume 4nk_node trouvé"
|
|
|
|
echo "📊 Volumes partagés dans docker-compose :"
|
|
if [ -f "$PROJECT_DIR/docker-compose.yml" ]; then
|
|
grep -A 5 -B 5 "shared_auth" "$PROJECT_DIR/docker-compose.yml" || echo "Volume shared_auth non trouvé"
|
|
fi
|
|
}
|
|
|
|
# Fonction principale
|
|
main() {
|
|
case "${1:-all}" in
|
|
"cookie")
|
|
setup_bitcoin_cookie
|
|
;;
|
|
"access")
|
|
verify_cookie_access
|
|
;;
|
|
"rpc")
|
|
test_rpc_connectivity
|
|
;;
|
|
"volumes")
|
|
show_shared_volumes
|
|
;;
|
|
"all"|*)
|
|
echo "🚀 Exécution de toutes les vérifications..."
|
|
setup_bitcoin_cookie
|
|
verify_cookie_access
|
|
test_rpc_connectivity
|
|
show_shared_volumes
|
|
;;
|
|
esac
|
|
|
|
echo "✅ Gestion de l'authentification terminée"
|
|
}
|
|
|
|
# Exécution du script
|
|
main "$@"
|