This commit is contained in:
Marc Beninca 2025-03-30 22:17:01 +02:00
parent 8d869993a7
commit 40d6d79394
Signed by: marc.beninca
GPG key ID: 9C7613450C80C24F

View file

@ -1,6 +1,7 @@
_rwx_cmd_cs() { rwx_crypt "${@}"; } _rwx_cmd_cs() { rwx_crypt "${@}"; }
RWX_CRYPT_ROOT="/data/home/user/crypt" RWX_CRYPT_ROOT="/data/home/user/crypt"
RWX_CRYPT_VAR="/var/lib/crypt"
rwx_crypt_device() { rwx_crypt_device() {
local device size local device size
@ -48,28 +49,35 @@ rwx_crypt() {
if [ -f "${crypt_file}" ]; then if [ -f "${crypt_file}" ]; then
crypt_map="${mapper}/${crypt_arg}" crypt_map="${mapper}/${crypt_arg}"
crypt_mount="${mount_root}/${crypt_arg}" crypt_mount="${mount_root}/${crypt_arg}"
local device
case "${action}" in case "${action}" in
"${action_open}") "${action_open}")
local device
if ! device="$(rwx_crypt_device)"; then if ! device="$(rwx_crypt_device)"; then
rwx_log_error 4 "No device available" rwx_log_error 4 "No device available"
fi fi
# record device
if ! rwx_file_write \
"${RWX_CRYPT_VAR}/${crypt_arg}" "${device}"; then
rwx_log_error 5 "Writing failure: ${device}"
fi
# connect device # connect device
if ! qemu-nbd --connect "${device}" "${crypt_file}"; then if ! qemu-nbd --connect "${device}" "${crypt_file}"; then
rwx_log_error 5 "Connection failure: ${device}" rwx_log_error 6 "Connection failure: ${device}"
fi fi
# open device # open device
echo "${pass_phrase}" | if ! echo "${pass_phrase}" |
cryptsetup luksOpen "${device}" "${crypt_arg}" cryptsetup luksOpen "${device}" "${crypt_arg}"; then
rwx_log_error 7 "Opening failure: ${device}"
fi
# make mount directory # make mount directory
if ! mkdir --parents "${crypt_mount}"; then if ! mkdir --parents "${crypt_mount}"; then
rwx_log_error 7 "Making failure: ${crypt_mount}" rwx_log_error 8 "Making failure: ${crypt_mount}"
fi fi
# mount file system # mount file system
if ! mount \ if ! mount \
--options "autodefrag,compress-force=zstd" \ --options "autodefrag,compress-force=zstd" \
"${crypt_map}" "${crypt_mount}"; then "${crypt_map}" "${crypt_mount}"; then
rwx_log_error 8 "Mounting failure: ${crypt_map}" rwx_log_error 9 "Mounting failure: ${crypt_map}"
fi fi
;; ;;
"${action_close}") "${action_close}")
@ -85,8 +93,14 @@ rwx_crypt() {
if ! cryptsetup luksClose "${crypt_arg}"; then if ! cryptsetup luksClose "${crypt_arg}"; then
rwx_log_error 6 "Closing failure: ${crypt_arg}" rwx_log_error 6 "Closing failure: ${crypt_arg}"
fi fi
# TODO disconnect device # load device
rwx_log_error 7 "Disconnecting failure: ${crypt_arg}" if ! device="$(cat "${RWX_CRYPT_ROOT}/${crypt_arg}")"; then
rwx_log_error 7 "Loading failure: ${crypt_arg}"
fi
# disconnect device
if ! qemu-nbd --disconnect "${device}"; then
rwx_log_error 8 "Disconnection failure: ${device}"
fi
;; ;;
*) ;; *) ;;
esac esac