#!/bin/bash # Script de test pour la connexion CalDAV Infomaniak # Usage: ./test-infomaniak-caldav.sh EMAIL="${1:-a.tmiri@icmaae.foundation}" PASSWORD="${2}" if [ -z "$PASSWORD" ]; then echo "Usage: $0 " echo "Example: $0 a.tmiri@icmaae.foundation 'your-password'" exit 1 fi BASE_URL="https://sync.infomaniak.com/caldav" echo "==========================================" echo "Test de connexion CalDAV Infomaniak" echo "==========================================" echo "Email: $EMAIL" echo "Base URL: $BASE_URL" echo "Password length: ${#PASSWORD}" echo "" # Test 1: PROPFIND sur la racine echo "Test 1: PROPFIND sur la racine (/)" echo "-----------------------------------" RESPONSE=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ -X PROPFIND \ -u "${EMAIL}:${PASSWORD}" \ -H "Depth: 1" \ -H "Content-Type: application/xml" \ --data-binary ' ' \ "${BASE_URL}/") HTTP_CODE=$(echo "$RESPONSE" | grep -o "HTTP_CODE:[0-9]*" | cut -d: -f2) BODY=$(echo "$RESPONSE" | sed '/HTTP_CODE:/d') echo "HTTP Status: $HTTP_CODE" if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "207" ]; then echo "✅ SUCCESS - Connexion réussie!" echo "" echo "Réponse:" echo "$BODY" | head -50 else echo "❌ FAILED - Erreur HTTP $HTTP_CODE" echo "" echo "Réponse complète:" echo "$BODY" fi echo "" echo "" # Test 2: OPTIONS pour vérifier les capacités echo "Test 2: OPTIONS pour vérifier les capacités" echo "--------------------------------------------" RESPONSE2=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ -X OPTIONS \ -u "${EMAIL}:${PASSWORD}" \ "${BASE_URL}/") HTTP_CODE2=$(echo "$RESPONSE2" | grep -o "HTTP_CODE:[0-9]*" | cut -d: -f2) BODY2=$(echo "$RESPONSE2" | sed '/HTTP_CODE:/d') echo "HTTP Status: $HTTP_CODE2" if [ "$HTTP_CODE2" = "200" ]; then echo "✅ SUCCESS" echo "" echo "Headers (capacités):" curl -s -I -X OPTIONS \ -u "${EMAIL}:${PASSWORD}" \ "${BASE_URL}/" | grep -i "dav\|allow\|calendar" else echo "❌ FAILED - Erreur HTTP $HTTP_CODE2" fi echo "" echo "" # Test 3: GET sur la racine echo "Test 3: GET sur la racine (/)" echo "------------------------------" RESPONSE3=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ -u "${EMAIL}:${PASSWORD}" \ "${BASE_URL}/") HTTP_CODE3=$(echo "$RESPONSE3" | grep -o "HTTP_CODE:[0-9]*" | cut -d: -f2) BODY3=$(echo "$RESPONSE3" | sed '/HTTP_CODE:/d') echo "HTTP Status: $HTTP_CODE3" if [ "$HTTP_CODE3" = "200" ] || [ "$HTTP_CODE3" = "207" ]; then echo "✅ SUCCESS" echo "" echo "Réponse:" echo "$BODY3" | head -30 else echo "❌ FAILED - Erreur HTTP $HTTP_CODE3" fi echo "" echo "" # Test 4: Vérification avec verbose pour voir les headers d'authentification echo "Test 4: Requête verbose (pour debug)" echo "-------------------------------------" echo "Commande curl complète:" echo "curl -v -X PROPFIND -u \"${EMAIL}:***\" -H \"Depth: 1\" \"${BASE_URL}/\"" echo "" echo "Exécution (sans afficher le password):" curl -v -X PROPFIND \ -u "${EMAIL}:${PASSWORD}" \ -H "Depth: 1" \ -H "Content-Type: application/xml" \ --data-binary ' ' \ "${BASE_URL}/" 2>&1 | grep -E "(< HTTP|Authorization|WWW-Authenticate|401|200|207)" | head -20 echo "" echo "==========================================" echo "Résumé:" echo "==========================================" if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "207" ]; then echo "✅ La connexion CalDAV fonctionne correctement" echo " Le problème pourrait être dans le code Node.js" elif [ "$HTTP_CODE" = "401" ]; then echo "❌ Erreur 401 Unauthorized" echo " Causes possibles:" echo " 1. Mot de passe incorrect" echo " 2. 2FA activé - nécessite un mot de passe d'application" echo " 3. Compte suspendu ou désactivé" echo " 4. Email incorrect" else echo "⚠️ Erreur HTTP $HTTP_CODE" echo " Vérifiez la connexion réseau et l'URL" fi echo ""