#!/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 # #----------------------------------------------------------# # Defining user list users=$($BIN/v-list-users | tail -n+3 | awk '{ print $1 }') # Checking users for user in $users; do USER_DATA=$VESTA/data/users/$user # Checking user certificates for domain in $(search_objects 'web' 'LETSENCRYPT' 'yes' 'DOMAIN'); do crt="$VESTA/data/users/$user/ssl/$domain.crt" crt_data=$(openssl x509 -text -in "$crt") expire=$(echo "$crt_data" |grep "Not After") expire=$(echo "$expire" |cut -f 2,3,4 -d :) expire=$(date -d "$expire" +%s) now=$(date +%s) expire=$((expire - now)) expire=$((expire / 86400)) domain=$(basename $crt |sed -e "s/.crt$//") if [[ "$expire" -lt 31 ]]; then aliases=$(echo "$crt_data" |grep DNS:) aliases=$(echo "$aliases" |sed -e "s/DNS://g" -e "s/,//") aliases=$(echo "$aliases" |tr ' ' '\n' |sed "/^$/d") aliases=$(echo "$aliases" |grep -v "^$domain$") if [ ! -z "$aliases" ]; then 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" fi else msg==$($BIN/v-add-letsencrypt-domain $user $domain) if [ $? -ne 0 ]; then echo "$domain $msg" fi fi fi sleep 10 done done #----------------------------------------------------------# # Vesta # #----------------------------------------------------------# # No Logging #log_event "$OK" "$EVENT" exit