#!/bin/bash
trap '' INT TERM TSTP PIPE
clear
echo -e "\033[1;36m=== Melawy OS Remote Decryption Infrastructure ===\033[0m"
echo -e "Хост: Защищенный рантайм Initramfs (Dracut Layer)"
echo -e "Статус: Ожидание разблокировки LUKS-контейнеров...\n"

unlock_volumes() {
    local attempts=0
    local max_attempts=5
    while [ $attempts -lt $max_attempts ]; do
        read -s -p "Введите мастер-пароль Melawy OS: " passphrase
        echo ""
        if [ -z "$passphrase" ]; then
            echo -e "\033[1;31m[Ошибка] Пароль не может быть пустым.\033[0m\n"
            ((attempts++))
            continue
        fi
        echo "Проверка сигнатур и расшифровка контейнеров..."
        local success=true
        for dev in /dev/disk/by-id/* /dev/sd* /dev/nvme* 2>/dev/null; do
            if [ -b "$dev" ] && cryptsetup isLuks "$dev" 2>/dev/null; then
                local uuid=$(cryptsetup luksUUID "$dev" 2>/dev/null)
                if [ ! -b "/dev/mapper/luks-$uuid" ]; then
                    echo "-> Открываем контейнер UUID: $uuid ($dev)..."
                    echo -n "$passphrase" | cryptsetup open "$dev" "luks-$uuid" 2>/dev/null
                    if [ $? -ne 0 ]; then success=false; fi
                fi
            fi
        done
        if [ "$success" = true ]; then
            echo -e "\n\033[1;32m[Успех] Все LUKS-контейнеры успешно расшифрованы!\033[0m"
            if [ -f /tmp/cryptroot-asked ]; then echo "1" > /tmp/cryptroot-asked; fi
            systemctl restart systemd-cryptsetup@* 2>/dev/null || true
            udevadm trigger --action=change 2>/dev/null || true
            sleep 2
            exit 0
        else
            echo -e "\033[1;31m[Сбой] Неверный мастер-пароль.\033[0m"
            local remaining=$((max_attempts - attempts - 1))
            echo -e "Осталось попыток: $remaining\n"
            ((attempts++))
        fi
    done
    exit 1
}
unlock_volumes
