@@ -1213,31 +1213,38 @@ list_cert_all() {
1213
1213
exit 1
1214
1214
fi
1215
1215
1216
- echo -e " \n 📜 Liste de tous les certificats SSL :"
1216
+ echo -e " \n 📜 SSL Certificates List :"
1217
1217
1218
1218
# Check if there are any certificates
1219
1219
if [ " $RESPONSE " = " []" ]; then
1220
- echo -e " ℹ️ ${COLOR_YELLOW} Aucun certificat trouvé ${CoR} "
1220
+ echo -e " ℹ️ ${COLOR_YELLOW} No certificates found ${CoR} "
1221
1221
return 0
1222
1222
fi
1223
1223
1224
1224
# 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
1227
1237
# Display statistics
1228
1238
TOTAL_CERTS=$( echo " $RESPONSE " | jq ' . | length' )
1229
1239
VALID_CERTS=$( echo " $RESPONSE " | jq ' [.[] | select(.expired == false)] | length' )
1230
1240
EXPIRED_CERTS=$( echo " $RESPONSE " | jq ' [.[] | select(.expired == true)] | length' )
1231
1241
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"
1236
1246
}
1237
1247
1238
-
1239
-
1240
-
1241
1248
# ###############################
1242
1249
# Create a new proxy host
1243
1250
create_new_proxy_host () {
@@ -1333,22 +1340,58 @@ create_or_update_proxy_host() {
1333
1340
-H " Content-Type: application/json; charset=UTF-8" \
1334
1341
--data-raw " $DATA " )
1335
1342
1336
- # Check API response
1343
+ # Check API response
1337
1344
ERROR_MSG=$( echo " $RESPONSE " | jq -r ' .error.message // empty' )
1338
1345
if [ -z " $ERROR_MSG " ]; then
1339
1346
PROXY_ID=$( echo " $RESPONSE " | jq -r ' .id // "unknown"' )
1340
1347
1341
1348
# Si on a demandé de générer un certificat
1342
1349
if [ " $GENERATE_CERT " = true ]; then
1343
1350
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} "
1348
1392
fi
1349
- # On passe ENABLE_SSL à la fonction
1350
- generate_certificate " $DOMAIN_NAMES " " $CERT_EMAIL " " $DNS_PROVIDER " " $DNS_API_KEY " " $ENABLE_SSL "
1351
1393
fi
1394
+ fi
1352
1395
1353
1396
if [ " $METHOD " = " PUT" ]; then
1354
1397
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() {
2303
2346
# ###############################
2304
2347
# Enable SSL for a proxy host
2305
2348
host_enable_ssl () {
2349
+
2306
2350
# Default values if not set
2307
2351
SSL_FORCED=${SSL_FORCED:- true}
2308
2352
HTTP2_SUPPORT=${HTTP2_SUPPORT:- true}
@@ -3624,6 +3668,20 @@ while [[ "$#" -gt 0 ]]; do
3624
3668
export AUTO_YES=true # Pour que generate_certificate le voit
3625
3669
fi
3626
3670
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
3627
3685
GENERATE_CERT=false
3628
3686
fi
3629
3687
;;
0 commit comments