Skip to content

Commit 1e605e6

Browse files
committed
Update: Bug FIX wildcard and one liner command
1 parent afa23b9 commit 1e605e6

File tree

1 file changed

+76
-18
lines changed

1 file changed

+76
-18
lines changed

npm-api.sh

Lines changed: 76 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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
12431250
create_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
23052348
host_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

Comments
 (0)