crypt/device

This commit is contained in:
Marc Beninca 2025-03-30 18:50:51 +02:00
parent f4f1aeaccf
commit aa2ed7014b
Signed by: marc.beninca
GPG key ID: 9C7613450C80C24F

View file

@ -2,9 +2,30 @@ _rwx_cmd_cs() { rwx_crypt "${@}"; }
RWX_CRYPT_ROOT="${HOME}/home/crypt"
rwx_crypt_device() {
local device size
local index=0
while [ -z "${device}" ]; do
device="/dev/nbd${index}"
if [ -b "${device}" ]; then
size="$(cat /sys/block/nbd"${index}/size")"
[ "${size}" -eq 0 ] ||
device=""
else
device=""
break
fi
index=$((index + 1))
done
if [ -n "${device}" ]; then
echo "${device}"
else
rwx_log_error 1 "No device available"
fi
}
rwx_crypt() {
local action="${1}"
shift
local action_close="close"
local action_open="open"
local mapper="/dev/mapper"
@ -12,6 +33,7 @@ rwx_crypt() {
local crypt_arg crypt_file crypt_map crypt_mount pass_phrase
case "${action}" in
"${action_close}" | "${action_open}")
shift
local user_id
user_id="$(id --user)"
[ "${user_id}" -eq 0 ] ||
@ -22,34 +44,20 @@ rwx_crypt() {
pass_phrase="$(rwx_read_passphrase)"
for crypt_arg in "${@}"; do
rwx_log_info
crypt_file="${RWX_CRYPT_ROOT}/${crypt_arg}"
crypt_file="${RWX_CRYPT_ROOT}/${crypt_arg}.qcow2"
if [ -f "${crypt_file}" ]; then
crypt_map="${mapper}/${crypt_arg}"
crypt_mount="${mount_root}/${crypt_arg}"
case "${action}" in
"${action_open}")
rwx_log_info "OPEN"
local nbd_device nbd_size
local nbd_index=0
while [ -z "${nbd_device}" ]; do
if [ -f "/dev/nbd${nbd_index}" ]; then
nbd_size="$(cat /sys/block/nbd"${nbd_index}/size")"
[ "${nbd_size}" -eq 0 ] &&
nbd_device="/dev/nbd${nbd_index}"
fi
nbd_index=$((nbd_index + 1))
done
[ -z "${nbd_device}" ] &&
rwx_log_error 4 "No device available"
rwx_log_info "device: ${nbd_device}"
local nbd_device="$(rwx_crypt_device)"
echo "device: ${nbd_device}"
# TODO connect device
# TODO open device
echo "${pass_phrase}"
# TODO make mount directory
# TODO mount file system
;;
"${action_close}")
rwx_log_info "CLOSE"
# TODO unmount file system
# TODO remove mount directory
# TODO close device