#!/bin/bash
http_proxy=""
https_proxy=""
# Проверка на запуск от root
if [ "$(id -u)" -ne 0 ]; then
    echo "Ошибка: Скрипт должен быть запущен с правами root."
    echo "Пожалуйста, запустите скрипт из под root"
    echo "'curl -sSL "https://repo.consulzeny.ru/astra_linux/инструкции/criptopro5/auto_crl.sh" | bash'"
    exit 1
fi

# Настройки
BASE_URL="https://repo.consulzeny.ru/astra_linux/distr/crl/"
DOWNLOAD_DIR="/tmp/cdp_ufk"
CRL_STORE="mca" 

cleanup() {
    echo "Очистка временных файлов..."
    [ -d "$DOWNLOAD_DIR" ] && rm -rf "$DOWNLOAD_DIR"
    [ -f "$TMP_FILE" ] && rm -f "$TMP_FILE"
    exit
}

trap cleanup EXIT INT TERM

# --- Скачивание CRL ---
echo "=== Загрузка CRL-файлов ==="
mkdir -p "$DOWNLOAD_DIR" || { echo "Ошибка: Не удалось создать $DOWNLOAD_DIR"; exit 1; }

TMP_FILE=$(mktemp) || { echo "Ошибка: Не удалось создать временный файл"; exit 1; }
echo "Получаю список CRL с $BASE_URL..."
if ! wget -q -O - "$BASE_URL" | grep -o 'href="[^"]*\.crl"' | sed 's/href="//;s/"$//' > "$TMP_FILE"; then
    echo "Ошибка: Не удалось получить список CRL"
    exit 1
fi
cd "$DOWNLOAD_DIR" || exit 1
echo "Скачиваю CRL в $DOWNLOAD_DIR..."
while read -r crl_url; do
    if [[ "$crl_url" =~ ^http ]]; then
        full_url="$crl_url"
    else
        full_url="${BASE_URL%/}/${crl_url#/}"
    fi
    echo "  $full_url"
    if ! wget -q --no-check-certificate "$full_url"; then
        echo "  Предупреждение: Не удалось скачать $full_url"
    fi
done < "$TMP_FILE"
rm "$TMP_FILE"

# --- Установка CRL ---
echo -e "\n=== Установка CRL в хранилище $CRL_STORE ==="
crl_files=("$DOWNLOAD_DIR"/*.crl)
if [ ${#crl_files[@]} -eq 0 ] || [ ! -f "${crl_files[0]}" ]; then
    echo "Нет CRL-файлов для установки в $DOWNLOAD_DIR"
    exit 1
fi
success_count=0
fail_count=0
for file in "${crl_files[@]}"; do
    if [ -f "$file" ]; then
        echo "Устанавливаю: $(basename "$file")"
        if /opt/cprocsp/bin/amd64/certmgr -inst -store "$CRL_STORE" -file "$file" -crl; then
            ((success_count++))
        else
            echo "Ошибка: Не удалось установить $(basename "$file")"
            ((fail_count++))
        fi
    fi
done
echo -e "\nРезультат:"
echo "Успешно установлено: $success_count"
echo "Не удалось установить: $fail_count"
echo -e "\nГотово!"
read -s -p "Нажмите любую клавишу для выхода..." -n 1
exit 0
