#!/bin/bash
# install-validata.sh — установка СКЗИ «Валидата CSP» + АПК «Валидата Клиент L»
# для работы Интеграционного шлюза НРД на Astra Linux.
#
# ВАЖНО: дистрибутив Валидаты не выложен публично. Получается по запросу:
#   - НРД:  soed@nsd.ru
#   - МБ:   pki@moex.com
# В письме указать: «Запрос дистрибутива СКЗИ Валидата CSP для Linux +
# временной лицензии для подключения к ЭДО НРД в рамках MOEX МОСТ M2M.»
#
# Скрипт ожидает что архив с дистрибутивом уже скачан и лежит:
#   dist/validata/<любые>.deb
# или передан как первый аргумент.
#
# Запуск:
#   sudo bash deploy/astra/install-validata.sh
#   sudo bash deploy/astra/install-validata.sh /path/to/validata-csp.deb

set -euo pipefail

log()   { echo -e "\033[1;34m[validata-install]\033[0m $*"; }
warn()  { echo -e "\033[1;33m[validata-install WARN]\033[0m $*" >&2; }
fail()  { echo -e "\033[1;31m[validata-install FAIL]\033[0m $*" >&2; exit 1; }

[ "$EUID" -eq 0 ] || fail "Запускать от root"

SEARCH_PATH="${1:-./dist/validata}"

if [ -f "$SEARCH_PATH" ] && [ "${SEARCH_PATH##*.}" = "deb" ]; then
    # Передан конкретный файл
    DEBS=( "$SEARCH_PATH" )
elif [ -d "$SEARCH_PATH" ]; then
    mapfile -t DEBS < <(find "$SEARCH_PATH" -maxdepth 2 -name '*.deb' 2>/dev/null | sort)
else
    fail "Не найден дистрибутив Валидаты. Положи .deb пакеты в dist/validata/ или передай путь аргументом.

Если у тебя ещё нет дистрибутива — запроси у НРД:
    Email:   soed@nsd.ru  (или pki@moex.com)
    Тема:    Запрос дистрибутива Валидата CSP для Linux
    Текст:   Просим предоставить дистрибутив СКЗИ Валидата CSP v.6 для Linux
             (Astra Linux SE 1.7) + временную лицензию для подключения к
             ЭДО НРД через ПО Интеграционный шлюз в рамках сервиса
             MOEX МОСТ M2M (см. инструкцию nsd.ru/workflow/system/programs/web-service/).
             Реквизиты организации: <ИНН, ОГРН, контактное лицо>.
"
fi

if [ "${#DEBS[@]}" = 0 ]; then
    fail "В каталоге $SEARCH_PATH не найдено ни одного .deb пакета"
fi

log "Найдено ${#DEBS[@]} пакетов Валидаты:"
for f in "${DEBS[@]}"; do
    echo "    $f"
done

log "Установка через dpkg..."
for f in "${DEBS[@]}"; do
    log "  $f"
    dpkg -i "$f" || {
        warn "  → пытаюсь починить зависимости"
        apt-get install -f -y
        dpkg -i "$f"
    }
done

# Проверка
log "Проверка установки..."
VAL_FOUND=0
for path in /opt/Validata /opt/validata-csp /opt/Validata-CSP; do
    [ -d "$path" ] && { log "  ✓ Валидата в $path"; VAL_FOUND=1; }
done
if [ "$VAL_FOUND" = 0 ]; then
    warn "Каталог Валидаты не нашёл — проверь dpkg -L <имя-пакета>"
fi

echo
echo "================================================================"
echo "  Валидата установлена"
echo "================================================================"
echo "  Следующие шаги:"
echo "    1. Запустить Справочник сертификатов АПК Валидата Клиент"
echo "       (GUI приложение)"
echo "    2. Загрузить корневой сертификат УЦ Московской Биржи"
echo "       (взять у УЦ МБ — ca.moex.com — для своей организации)"
echo "    3. Импортировать пользовательский сертификат с приватным ключом"
echo "    4. Меню Сервис → Экспортировать сертификаты в системное хранилище"
echo "    5. Установить ИШ:  sudo bash deploy/astra/install-ish.sh"
echo "================================================================"
