60 lines
2.5 KiB
Bash
Executable file
60 lines
2.5 KiB
Bash
Executable file
#!/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 "Сервер зачищен до голого железа." |