diff --git a/bin/v-update-letsencrypt-ssl b/bin/v-update-letsencrypt-ssl index 459b9879a..ac3e2eda9 100755 --- a/bin/v-update-letsencrypt-ssl +++ b/bin/v-update-letsencrypt-ssl @@ -23,12 +23,34 @@ source $VESTA/conf/vesta.conf #----------------------------------------------------------# lecounter=0 +hostname=$(hostname) + +echo "[$(date)] : -----------------------------------------------------------------------------------" >> /usr/local/vesta/log/letsencrypt_cron.log # Checking user certificates for user in $($BIN/v-list-users plain |cut -f 1); do USER_DATA=$VESTA/data/users/$user for domain in $(search_objects 'web' 'LETSENCRYPT' 'yes' 'DOMAIN'); do + + limit_check=1 + fail_counter=$(get_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT') + + if [[ "$hostname" = "$domain" ]]; then + if [[ "$fail_counter" -eq 7 ]]; then + limit_check=0 + fi + if [[ "$fail_counter" -eq 8 ]]; then + fail_counter=$(alter_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT') + send_email_to_admin "LetsEncrypt renewing hostname $hostname" "Warning: hostname $domain failed for LetsEncrypt renewing" + fi + fi + + if [[ "$fail_counter" -ge 7 ]] && [[ "$limit_check" -eq 1 ]]; then + # echo "$domain failed $fail_counter times for LetsEncrypt renewing, skipping" + echo "[$(date)] : $domain failed $fail_counter times for LetsEncrypt renewing, skipping" >> /usr/local/vesta/log/letsencrypt_cron.log + continue; + fi crt_data=$(openssl x509 -text -in $USER_DATA/ssl/$domain.crt) not_after=$(echo "$crt_data" |grep "Not After" |cut -f 2,3,4 -d :) expiration=$(date -d "$not_after" +%s) @@ -37,7 +59,7 @@ for user in $($BIN/v-list-users plain |cut -f 1); do days_valid=$((seconds_valid / 86400)) if [[ "$days_valid" -lt 31 ]]; then if [ $lecounter -gt 0 ]; then - sleep 10 + sleep 120 fi ((lecounter++)) aliases=$(echo "$crt_data" |grep DNS:) @@ -47,7 +69,15 @@ for user in $($BIN/v-list-users plain |cut -f 1); do aliases=$(echo "$aliases" |sed -e ':a;N;$!ba;s/\n/,/g') msg=$($BIN/v-add-letsencrypt-domain $user $domain $aliases) if [ $? -ne 0 ]; then - echo "$domain $msg" + if [[ $msg == *"is suspended" ]]; then + echo "[$(date)] : SUSPENDED: $domain $msg" >> /usr/local/vesta/log/letsencrypt_cron.log + else + echo "[$(date)] : $domain $msg" >> /usr/local/vesta/log/letsencrypt_cron.log + echo "$domain $msg" + fail_counter=$(alter_web_counter "$user" "$domain" 'LETSENCRYPT_FAIL_COUNT') + echo "[$(date)] : fail_counter = $fail_counter" >> /usr/local/vesta/log/letsencrypt_cron.log + echo "fail_counter = $fail_counter" + fi fi fi done