#!/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')
                $BIN/v-add-letsencrypt-domain $user $domain $aliases
            else
                $BIN/v-add-letsencrypt-domain $user $domain
            fi
        fi
    done
done

#----------------------------------------------------------#
#                       Vesta                              #
#----------------------------------------------------------#

# No Logging
#log_event "$OK" "$EVENT"

exit
