#!/bin/bash

# Функция проверки локального сертификата
check_local_cert() {
    local cert_file=$1
    local days_to_check=$2

    if [[ ! -f "$cert_file" ]]; then
        echo "Ошибка: Файл сертификата '$cert_file' не найден."
        return 1
    fi

    # Получаем дату истечения сертификата
    expiry_date=$(openssl x509 -in "$cert_file" -noout -dates | grep "notAfter=" | cut -d= -f2)

    if [[ -z "$expiry_date" ]]; then
        echo "Ошибка: не удалось получить дату истечения сертификата."
        return 1
    fi

    # Преобразуем дату истечения в UNIX-время
    expiry_unix=$(date -d "$expiry_date" +%s)

    # Текущая дата в UNIX-времени
    current_unix=$(date +%s)

    # Вычисляем разницу между текущей датой и датой истечения
    days_left=$(( ($expiry_unix - $current_unix) / 86400 ))

    if ((days_left <= 0)); then
        echo "Сертификат '$cert_file' истек!"
        return 0
    elif ((days_left <= days_to_check)); then
        echo "Предупреждение: Сертификат '$cert_file' истекает через $days_left дней."
        return 0
    else
        echo "Сертификат '$cert_file' действителен ещё $days_left дней."
        return 1
    fi
}

# Проверка сертификата и запуск соответствующего сценария обновления
check_first_cert() {
    local first_cert="/etc/letsencrypt/live/yalarba.ru/cert.pem"
    local first_script="/opt/renewYalarbaCert.sh"
    local warning_days=2

    if check_local_cert "$first_cert" "$warning_days"; then
        echo "Запускаю обновление сертификата yalarba.ru"
        "$first_script"
    fi
}

# Проверка сертификата и запуск соответствующего сценария обновления
check_second_cert() {
    local second_cert="/etc/letsencrypt/live/valitovgaziz.ru/cert.pem"
    local second_script="/opt/renewValitovGazizCert.sh"
    local warning_days=2

    if check_local_cert "$second_cert" "$warning_days"; then
        echo "Запускаю обновление сертификата valitovgaziz.ru"
        "$second_script"
    fi
}

# Проверка сертификата и запуск соответствующего сценария обновления
check_third_cert() {
    local third_cert="/etc/letsencrypt/live/easysite102.ru/cert.pem"
    local third_script="/opt/renewValitovGazizCert.sh"
    local warning_days=2

    if check_local_cert "$third_cert" "$warning_days"; then
        echo "Запускаю обновление сертификата easysite102.ru"
        "$third_script"
    fi
}

# Проверка сертификата и запуск соответствующего сценария обновления
check_forth_cert() {
    local forth_cert="/etc/letsencrypt/live/xn--80abahjtcfl5d0a8di.xn--p1ai/cert.pem"
    local forth_script="/opt/renewBegushiyBashkir.sh"
    local warning_days=2

    if check_local_cert "$forth_cert" "$warning_days"; then
        echo "Запускаю обновление сертификата для бегущийбашкир.рф"
        "$forth_script"
    fi
}

check_fifth_cert() {
    local fifth_cert="/etc/letsencrypt/live/begushiybashkir.ru/cert.pem"
    local fifth_script="/opt/renewBegushiyBashkirLatin.sh"
    local warning_days=2

    if check_local_cert "$fifth_cert" "$warning_days"; then
        echo "Запускаю обновление сертификата для begushiybashkir.ru"
        "$fifth_script"
    fi
}

# Основная функция для последовательной проверки обоих сертификатов
main() {
    check_first_cert
    check_second_cert
    check_third_cert
    check_forth_cert
    check_fifth_cert
}

# Запуск основной функции
main