#!/bin/bash
# 00-preflight.sh — проверки ПЕРЕД разворачиванием на свежей CentOS Stream 9.
# Ничего не меняет. Запускать от root.
set -euo pipefail
cd "$(dirname "$0")"; source ./env.sh
need_root

log "Проверка ОС"
. /etc/os-release 2>/dev/null || die "нет /etc/os-release"
echo "  $PRETTY_NAME"
case "${VERSION_ID%%.*}" in
  9) ok "EL9 — ок" ;;
  *) warn "Ожидался EL9 (CentOS Stream 9 / Alma9 / Rocky9). Найдено: $VERSION_ID. Скрипты заточены под el9." ;;
esac

log "Проверка наличия пакета миграции"
[ -d "$CONFIGS" ] || die "нет $CONFIGS — залей весь /opt/migration-backup-server обратно на сервер"
[ -d "$BACKUPS" ] || die "нет $BACKUPS"
FILES_TAR=$(ls -t "$BACKUPS"/files-*.tar.gz 2>/dev/null | head -1 || true)
[ -n "$FILES_TAR" ] || die "нет files-*.tar.gz в $BACKUPS"
ok "файловый бэкап: $FILES_TAR"
DB_DUMP=$(ls -t "$BACKUPS"/db-*.sql.gz 2>/dev/null | head -1 || true)
[ -n "$DB_DUMP" ] && ok "дамп БД: $DB_DUMP" || warn "дампа БД пока нет — будет добавлен на этапе переноса данных (50-database.sh)"

log "Проверка целостности архивов (gzip)"
gunzip -t "$FILES_TAR" && ok "files-tar gzip OK" || die "битый файловый архив"
[ -n "$DB_DUMP" ] && { gunzip -t "$DB_DUMP" && ok "db-dump gzip OK" || die "битый дамп БД"; }

log "Сверка контрольных сумм (если есть manifests/sha256.txt)"
if [ -f "$PKG/manifests/sha256.txt" ]; then
  ( cd "$PKG" && sha256sum -c manifests/sha256.txt 2>/dev/null ) && ok "sha256 совпали" || warn "sha256 не сошлись — проверь полноту заливки"
else
  warn "manifests/sha256.txt отсутствует — пропускаю"
fi

log "Сеть/диск"
ping -c1 -W2 rpms.remirepo.net >/dev/null 2>&1 && ok "интернет есть" || warn "нет доступа к remirepo — репозитории не поставятся"
df -h / | awk 'NR==2{print "  / свободно: "$4" (нужно >= размер сайта+БД)"}'

log "Готово. Дальше по порядку: 10-repos → 20-packages → 30-files → 40-configs → (данные: 50-database) → 60-ssl → 70-selinux → 80-firewall → 90-services → 99-verify"
