mirror of
https://github.com/Erreur32/nginx-proxy-manager-Bash-API.git
synced 2025-04-10 10:01:17 +02:00
Update: Bug FIX wildcard and one liner command
This commit is contained in:
parent
afa23b9fe2
commit
1e605e60a7
1 changed files with 76 additions and 18 deletions
94
npm-api.sh
94
npm-api.sh
|
@ -1213,31 +1213,38 @@ list_cert_all() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "\n 📜 Liste de tous les certificats SSL:"
|
||||
echo -e "\n 📜 SSL Certificates List:"
|
||||
|
||||
# Check if there are any certificates
|
||||
if [ "$RESPONSE" = "[]" ]; then
|
||||
echo -e " ℹ️ ${COLOR_YELLOW}Aucun certificat trouvé${CoR}"
|
||||
echo -e " ℹ️ ${COLOR_YELLOW}No certificates found${CoR}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Process and display all certificates
|
||||
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"'
|
||||
|
||||
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)"' | \
|
||||
while IFS= read -r line; do
|
||||
if [[ $line == *"❌ EXPIRED"* ]]; then
|
||||
echo -e "${line/❌ EXPIRED/${COLOR_RED}❌ EXPIRED${CoR}}"
|
||||
elif [[ $line == *"✅ VALID"* ]]; then
|
||||
echo -e "${line/✅ VALID/${COLOR_GREEN}✅ VALID${CoR}}"
|
||||
elif [[ $line == *"⚠️ PENDING"* ]]; then
|
||||
echo -e "${line/⚠️ PENDING/${COLOR_YELLOW}⚠️ PENDING${CoR}}"
|
||||
else
|
||||
echo -e "$line"
|
||||
fi
|
||||
done
|
||||
# Display statistics
|
||||
TOTAL_CERTS=$(echo "$RESPONSE" | jq '. | length')
|
||||
VALID_CERTS=$(echo "$RESPONSE" | jq '[.[] | select(.expired == false)] | length')
|
||||
EXPIRED_CERTS=$(echo "$RESPONSE" | jq '[.[] | select(.expired == true)] | length')
|
||||
|
||||
echo -e "\n📊 Statistiques:"
|
||||
echo -e " • Total des certificats: ${COLOR_CYAN}$TOTAL_CERTS${CoR}"
|
||||
echo -e " • Certificats valides: ${COLOR_GREEN}$VALID_CERTS${CoR}"
|
||||
echo -e " • Certificats expirés: ${COLOR_RED}$EXPIRED_CERTS${CoR}\n"
|
||||
echo -e "\n 📊 Statistics:"
|
||||
echo -e " • Total certificates: ${COLOR_CYAN}$TOTAL_CERTS${CoR}"
|
||||
echo -e " • Valid certificates: ${COLOR_GREEN}$VALID_CERTS${CoR}"
|
||||
echo -e " • Expired certificates: ${COLOR_RED}$EXPIRED_CERTS${CoR}\n"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
################################
|
||||
# Create a new proxy host
|
||||
create_new_proxy_host() {
|
||||
|
@ -1333,7 +1340,7 @@ create_or_update_proxy_host() {
|
|||
-H "Content-Type: application/json; charset=UTF-8" \
|
||||
--data-raw "$DATA")
|
||||
|
||||
# Check API response
|
||||
# Check API response
|
||||
ERROR_MSG=$(echo "$RESPONSE" | jq -r '.error.message // empty')
|
||||
if [ -z "$ERROR_MSG" ]; then
|
||||
PROXY_ID=$(echo "$RESPONSE" | jq -r '.id // "unknown"')
|
||||
|
@ -1341,14 +1348,50 @@ create_or_update_proxy_host() {
|
|||
# Si on a demandé de générer un certificat
|
||||
if [ "$GENERATE_CERT" = true ]; then
|
||||
echo -e " 🔐 Generate SSL certificat ..."
|
||||
DNS_PROVIDER=""
|
||||
DNS_API_KEY=""
|
||||
if [ "$AUTO_YES" = true ]; then
|
||||
export AUTO_YES=true
|
||||
generate_certificate "$DOMAIN_NAMES" "$CERT_EMAIL" "$DNS_PROVIDER" "$DNS_API_KEY"
|
||||
|
||||
# Vérifier que le certificat a été créé
|
||||
CERT_CHECK=$(curl -s -X GET "$BASE_URL/nginx/certificates" \
|
||||
-H "Authorization: Bearer $(cat "$TOKEN_FILE")")
|
||||
|
||||
CERT_ID=$(echo "$CERT_CHECK" | jq -r --arg domain "$DOMAIN_NAMES" \
|
||||
'.[] | select(.domain_names[] == $domain) | .id' | sort -n | tail -n1)
|
||||
|
||||
if [ -n "$CERT_ID" ]; then
|
||||
echo -e " ✨ Automatic SSL Activation ..."
|
||||
|
||||
# Mettre à jour le host avec le certificat
|
||||
UPDATE_DATA=$(jq -n \
|
||||
--arg cert_id "$CERT_ID" \
|
||||
'{
|
||||
certificate_id: $cert_id,
|
||||
ssl_forced: true,
|
||||
http2_support: true,
|
||||
hsts_enabled: false,
|
||||
hsts_subdomains: false,
|
||||
enabled: true
|
||||
}')
|
||||
|
||||
UPDATE_RESPONSE=$(curl -s -w "HTTPSTATUS:%{http_code}" -X PUT \
|
||||
"$BASE_URL/nginx/proxy-hosts/$PROXY_ID" \
|
||||
-H "Authorization: Bearer $(cat "$TOKEN_FILE")" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "$UPDATE_DATA")
|
||||
|
||||
UPDATE_STATUS=${UPDATE_RESPONSE##*HTTPSTATUS:}
|
||||
|
||||
# Vérifier que la mise à jour a réussi
|
||||
if [ "$UPDATE_STATUS" -eq 200 ]; then
|
||||
echo -e " ✅ ${COLOR_GREEN}SSL Configuration Complete${CoR}"
|
||||
echo -e " 📋 SSL Status for $DOMAIN_NAMES:"
|
||||
echo -e " ├─ 🔒 SSL: ${COLOR_GREEN}Enabled${CoR}"
|
||||
echo -e " ├─ 📜 Certificate ID: $CERT_ID"
|
||||
echo -e " ├─ 🚀 HTTP/2: ${COLOR_GREEN}Active${CoR}"
|
||||
echo -e " ├─ 🛡️ HSTS: ${COLOR_RED}Disabled${CoR}"
|
||||
echo -e " └─ 🌐 HSTS Subdomains: ${COLOR_RED}Disabled${CoR}"
|
||||
fi
|
||||
# On passe ENABLE_SSL à la fonction
|
||||
generate_certificate "$DOMAIN_NAMES" "$CERT_EMAIL" "$DNS_PROVIDER" "$DNS_API_KEY" "$ENABLE_SSL"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$METHOD" = "PUT" ]; then
|
||||
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() {
|
|||
################################
|
||||
# Enable SSL for a proxy host
|
||||
host_enable_ssl() {
|
||||
|
||||
# Default values if not set
|
||||
SSL_FORCED=${SSL_FORCED:-true}
|
||||
HTTP2_SUPPORT=${HTTP2_SUPPORT:-true}
|
||||
|
@ -3624,6 +3668,20 @@ while [[ "$#" -gt 0 ]]; do
|
|||
export AUTO_YES=true # Pour que generate_certificate le voit
|
||||
fi
|
||||
generate_certificate "$DOMAIN_NAMES" "$CERT_EMAIL" "$DNS_PROVIDER" "$DNS_API_KEY" "$ENABLE_SSL"
|
||||
# Récupérer l'ID du host qui vient d'être créé
|
||||
HOST_ID=$(curl -s -X GET "$BASE_URL/nginx/proxy-hosts" \
|
||||
-H "Authorization: Bearer $(cat "$TOKEN_FILE")" | \
|
||||
jq -r --arg domain "$DOMAIN_NAMES" '.[] | select(.domain_names[] == $domain) | .id')
|
||||
|
||||
# Récupérer l'ID du certificat qui vient d'être créé
|
||||
CERT_ID=$(curl -s -X GET "$BASE_URL/nginx/certificates" \
|
||||
-H "Authorization: Bearer $(cat "$TOKEN_FILE")" | \
|
||||
jq -r --arg domain "$DOMAIN_NAMES" '.[] | select(.domain_names[] == $domain) | .id')
|
||||
|
||||
if [ -n "$HOST_ID" ] && [ -n "$CERT_ID" ]; then
|
||||
echo -e "\n ✨ Automatic SSL Activation ..."
|
||||
host_enable_ssl "$HOST_ID" "$CERT_ID"
|
||||
fi
|
||||
GENERATE_CERT=false
|
||||
fi
|
||||
;;
|
||||
|
|
Loading…
Add table
Reference in a new issue