@@ -1213,31 +1213,38 @@ list_cert_all() {
12131213 exit 1
12141214 fi
12151215
1216- echo -e " \n 📜 Liste de tous les certificats SSL :"
1216+ echo -e " \n 📜 SSL Certificates List :"
12171217
12181218 # Check if there are any certificates
12191219 if [ " $RESPONSE " = " []" ]; then
1220- echo -e " ℹ️ ${COLOR_YELLOW} Aucun certificat trouvé ${CoR} "
1220+ echo -e " ℹ️ ${COLOR_YELLOW} No certificates found ${CoR} "
12211221 return 0
12221222 fi
12231223
12241224 # Process and display all certificates
1225- echo " $RESPONSE " | jq -r ' .[] | "🔒 ID: \(.id)\n • Domain(s): \(.domain_names | join(", "))\n • Provider: \(.provider)\n • Valid from: \(.valid_from)\n • Valid to: \(.valid_to)\n • Status: \(if .expired then "❌ EXPIRED" else "✅ VALID" end)\n"'
1226-
1225+ echo " $RESPONSE " | jq -r ' .[] | " 🔒 ID: \(.id)\n • Domain(s): \(.domain_names | join(", "))\n • Provider: \(.provider)\n • Created on: \(.created_on // "N/A")\n • Expires on: \(.expires_on // "N/A")\n • Status: \(if .expired then "❌ EXPIRED" else if .expires_on then "✅ VALID" else "⚠️ PENDING" end end)"' | \
1226+ while IFS= read -r line; do
1227+ if [[ $line == * " ❌ EXPIRED" * ]]; then
1228+ echo -e " ${line/ ❌ EXPIRED/ ${COLOR_RED} ❌ EXPIRED${CoR} } "
1229+ elif [[ $line == * " ✅ VALID" * ]]; then
1230+ echo -e " ${line/ ✅ VALID/ ${COLOR_GREEN} ✅ VALID${CoR} } "
1231+ elif [[ $line == * " ⚠️ PENDING" * ]]; then
1232+ echo -e " ${line/ ⚠️ PENDING/ ${COLOR_YELLOW} ⚠️ PENDING${CoR} } "
1233+ else
1234+ echo -e " $line "
1235+ fi
1236+ done
12271237 # Display statistics
12281238 TOTAL_CERTS=$( echo " $RESPONSE " | jq ' . | length' )
12291239 VALID_CERTS=$( echo " $RESPONSE " | jq ' [.[] | select(.expired == false)] | length' )
12301240 EXPIRED_CERTS=$( echo " $RESPONSE " | jq ' [.[] | select(.expired == true)] | length' )
12311241
1232- echo -e " \n📊 Statistiques :"
1233- echo -e " • Total des certificats : ${COLOR_CYAN} $TOTAL_CERTS ${CoR} "
1234- echo -e " • Certificats valides : ${COLOR_GREEN} $VALID_CERTS ${CoR} "
1235- echo -e " • Certificats expirés : ${COLOR_RED} $EXPIRED_CERTS ${CoR} \n"
1242+ echo -e " \n 📊 Statistics :"
1243+ echo -e " • Total certificates : ${COLOR_CYAN} $TOTAL_CERTS ${CoR} "
1244+ echo -e " • Valid certificates : ${COLOR_GREEN} $VALID_CERTS ${CoR} "
1245+ echo -e " • Expired certificates : ${COLOR_RED} $EXPIRED_CERTS ${CoR} \n"
12361246}
12371247
1238-
1239-
1240-
12411248# ###############################
12421249# Create a new proxy host
12431250create_new_proxy_host () {
@@ -1333,22 +1340,58 @@ create_or_update_proxy_host() {
13331340 -H " Content-Type: application/json; charset=UTF-8" \
13341341 --data-raw " $DATA " )
13351342
1336- # Check API response
1343+ # Check API response
13371344 ERROR_MSG=$( echo " $RESPONSE " | jq -r ' .error.message // empty' )
13381345 if [ -z " $ERROR_MSG " ]; then
13391346 PROXY_ID=$( echo " $RESPONSE " | jq -r ' .id // "unknown"' )
13401347
13411348 # Si on a demandé de générer un certificat
13421349 if [ " $GENERATE_CERT " = true ]; then
13431350 echo -e " 🔐 Generate SSL certificat ..."
1344- DNS_PROVIDER=" "
1345- DNS_API_KEY=" "
1346- if [ " $AUTO_YES " = true ]; then
1347- export AUTO_YES=true
1351+ generate_certificate " $DOMAIN_NAMES " " $CERT_EMAIL " " $DNS_PROVIDER " " $DNS_API_KEY "
1352+
1353+ # Vérifier que le certificat a été créé
1354+ CERT_CHECK=$( curl -s -X GET " $BASE_URL /nginx/certificates" \
1355+ -H " Authorization: Bearer $( cat " $TOKEN_FILE " ) " )
1356+
1357+ CERT_ID=$( echo " $CERT_CHECK " | jq -r --arg domain " $DOMAIN_NAMES " \
1358+ ' .[] | select(.domain_names[] == $domain) | .id' | sort -n | tail -n1)
1359+
1360+ if [ -n " $CERT_ID " ]; then
1361+ echo -e " ✨ Automatic SSL Activation ..."
1362+
1363+ # Mettre à jour le host avec le certificat
1364+ UPDATE_DATA=$( jq -n \
1365+ --arg cert_id " $CERT_ID " \
1366+ ' {
1367+ certificate_id: $cert_id,
1368+ ssl_forced: true,
1369+ http2_support: true,
1370+ hsts_enabled: false,
1371+ hsts_subdomains: false,
1372+ enabled: true
1373+ }' )
1374+
1375+ UPDATE_RESPONSE=$( curl -s -w " HTTPSTATUS:%{http_code}" -X PUT \
1376+ " $BASE_URL /nginx/proxy-hosts/$PROXY_ID " \
1377+ -H " Authorization: Bearer $( cat " $TOKEN_FILE " ) " \
1378+ -H " Content-Type: application/json" \
1379+ --data " $UPDATE_DATA " )
1380+
1381+ UPDATE_STATUS=${UPDATE_RESPONSE##* HTTPSTATUS: }
1382+
1383+ # Vérifier que la mise à jour a réussi
1384+ if [ " $UPDATE_STATUS " -eq 200 ]; then
1385+ echo -e " ✅ ${COLOR_GREEN} SSL Configuration Complete${CoR} "
1386+ echo -e " 📋 SSL Status for $DOMAIN_NAMES :"
1387+ echo -e " ├─ 🔒 SSL: ${COLOR_GREEN} Enabled${CoR} "
1388+ echo -e " ├─ 📜 Certificate ID: $CERT_ID "
1389+ echo -e " ├─ 🚀 HTTP/2: ${COLOR_GREEN} Active${CoR} "
1390+ echo -e " ├─ 🛡️ HSTS: ${COLOR_RED} Disabled${CoR} "
1391+ echo -e " └─ 🌐 HSTS Subdomains: ${COLOR_RED} Disabled${CoR} "
13481392 fi
1349- # On passe ENABLE_SSL à la fonction
1350- generate_certificate " $DOMAIN_NAMES " " $CERT_EMAIL " " $DNS_PROVIDER " " $DNS_API_KEY " " $ENABLE_SSL "
13511393 fi
1394+ fi
13521395
13531396 if [ " $METHOD " = " PUT" ]; then
13541397 echo -e " \n ✅ ${COLOR_GREEN} SUCCESS: Proxy host 🔗$DOMAIN_NAMES (ID: ${COLOR_YELLOW} $PROXY_ID ${COLOR_GREEN} ) updated successfully! 🎉${CoR} \n"
@@ -2303,6 +2346,7 @@ generate_certificate() {
23032346# ###############################
23042347# Enable SSL for a proxy host
23052348host_enable_ssl () {
2349+
23062350 # Default values if not set
23072351 SSL_FORCED=${SSL_FORCED:- true}
23082352 HTTP2_SUPPORT=${HTTP2_SUPPORT:- true}
@@ -3624,6 +3668,20 @@ while [[ "$#" -gt 0 ]]; do
36243668 export AUTO_YES=true # Pour que generate_certificate le voit
36253669 fi
36263670 generate_certificate " $DOMAIN_NAMES " " $CERT_EMAIL " " $DNS_PROVIDER " " $DNS_API_KEY " " $ENABLE_SSL "
3671+ # Récupérer l'ID du host qui vient d'être créé
3672+ HOST_ID=$( curl -s -X GET " $BASE_URL /nginx/proxy-hosts" \
3673+ -H " Authorization: Bearer $( cat " $TOKEN_FILE " ) " | \
3674+ jq -r --arg domain " $DOMAIN_NAMES " ' .[] | select(.domain_names[] == $domain) | .id' )
3675+
3676+ # Récupérer l'ID du certificat qui vient d'être créé
3677+ CERT_ID=$( curl -s -X GET " $BASE_URL /nginx/certificates" \
3678+ -H " Authorization: Bearer $( cat " $TOKEN_FILE " ) " | \
3679+ jq -r --arg domain " $DOMAIN_NAMES " ' .[] | select(.domain_names[] == $domain) | .id' )
3680+
3681+ if [ -n " $HOST_ID " ] && [ -n " $CERT_ID " ]; then
3682+ echo -e " \n ✨ Automatic SSL Activation ..."
3683+ host_enable_ssl " $HOST_ID " " $CERT_ID "
3684+ fi
36273685 GENERATE_CERT=false
36283686 fi
36293687 ;;
0 commit comments