| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/bin/bash
- # info: update letsencrypt ssl certificates
- # options: NONE
- #
- # The function for renew letsencrypt expired ssl certificate for all users
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Importing system enviroment as we run this script
- # mostly by cron wich not read it by itself
- source /etc/profile
- # Includes
- source $VESTA/func/main.sh
- source $VESTA/conf/vesta.conf
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- 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)
- now=$(date +%s)
- seconds_valid=$((expiration - now))
- days_valid=$((seconds_valid / 86400))
- if [[ "$days_valid" -lt 31 ]]; then
- if [ $lecounter -gt 0 ]; then
- sleep 120
- fi
- ((lecounter++))
- aliases=$(echo "$crt_data" |grep DNS:)
- aliases=$(echo "$aliases" |sed -e "s/DNS://g" -e "s/,//g")
- aliases=$(echo "$aliases" |tr ' ' '\n' |sed "/^$/d")
- aliases=$(echo "$aliases" |egrep -v "^$domain,?$")
- aliases=$(echo "$aliases" |sed -e ':a;N;$!ba;s/\n/,/g')
- msg=$($BIN/v-add-letsencrypt-domain $user $domain $aliases)
- if [ $? -ne 0 ]; then
- 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
- done
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- # No Logging
- #log_event "$OK" "$EVENT"
- exit
|