#!/bin/bash set -euo pipefail source "$(dirname "${BASH_SOURCE[0]}")/../lib/common.sh" RESET_WIPE_HISTORY="${RESET_WIPE_HISTORY:-false}" log_warn "ВНИМАНИЕ! Инициирована процедура полного уничтожения инфраструктуры Proxmox VE." log_info "Очистка текущей RAM-сессии. Требуется физическая повторная аутентификация..." rm -f "${RAM_CACHE}" /dev/shm/.atlas_core read -s -p "Master Password для подтверждения сноса: " KP_PASS echo "" yk_args=() if ykman info >/dev/null 2>&1; then yk_args=("-y" "2") log_info "Приготовьтесь к аппаратному подтверждению (касание YubiKey)..." fi tmp_verify="/dev/shm/.verify_$$" if ! echo "${KP_PASS}" | timeout 15 keepassxc-cli export "${yk_args[@]}" "${KDBX_PATH}" -f xml > "${tmp_verify}" 2>/dev/null; then log_err "Аппаратная проверка провалена или таймаут касания. Доступ заблокирован." rm -f "${tmp_verify}" unset KP_PASS if [[ "${RESET_WIPE_HISTORY}" == "true" ]]; then history -c 2>/dev/null || true fi exit 1 fi rm -f "${tmp_verify}" unset KP_PASS log_ok "Аппаратная проверка YubiKey и пароля подтверждена." read -r -p "Введите 'CONFIRM-DESTRUCTION' для безвозвратного уничтожения: " confirm if [[ "${confirm}" != "CONFIRM-DESTRUCTION" ]]; then log_warn "Отмена операции." exit 0 fi log_info "Снятие защиты и уничтожение виртуальных машин и контейнеров на Proxmox..." ssh proxmox bash << 'SSHEOF' for id in 100 201 202 203; do qm stop $id --skiplock 1 2>/dev/null || true qm destroy $id --purge 1 --destroy-unreferenced-disks 1 2>/dev/null || true done for id in 101 102 103 104 105; do pct set $id -protection 0 2>/dev/null || true pct stop $id --skiplock 1 2>/dev/null || true pct destroy $id --purge 1 --force 1 2>/dev/null || true done SSHEOF log_info "Очистка локального стейта OpenTofu..." rm -f "${REPO_ROOT}/tofu/terraform.tfstate"* "${REPO_ROOT}/tofu/.terraform.tfstate.lock.info" rm -f "${RAM_CACHE}" /dev/shm/.atlas_core if [[ "${RESET_WIPE_HISTORY}" == "true" ]]; then history -c 2>/dev/null || true fi log_ok "Сервер зачищен до голого железа."