#! /usr/bin/env bash set -euo pipefail storage="/dev/disk/by-uuid/3f781aab-24b5-4de0-8632-b9df922d6433" music="/dev/disk/by-uuid/e0b19c7d-9e90-4117-aea1-7e4b321d9d5a" photos="/dev/disk/by-uuid/b3c5a842-474b-4c2f-a246-abebe1da3450" backup="/dev/disk/by-uuid/e003337a-33e9-4691-bc57-e77243e55de5" video="/dev/disk/by-uuid/5ac700be-e168-495b-b133-42064fa101e4" media="/dev/disk/by-uuid/e5adbc14-732e-43e8-b6e1-febdfe6d1d3c" mediabackup="/dev/disk/by-uuid/4467b7af-ab65-4fb7-9798-00d0ee9b4002" videobackup="/dev/disk/by-uuid/80d50a4c-a04e-432e-8265-9a11a4386612" audiobackup="/dev/disk/by-uuid/c1d8cea9-aa95-4063-a44d-63e0a702477b" function open_cryptdevice() { if [ -L "$1" ]; then /usr/bin/sudo /usr/bin/cryptsetup luksOpen $1 $2 else echo "Error: Device $2 ($1) is not available." return 1 fi } function close_cryptdevice() { /usr/bin/sudo /usr/bin/cryptsetup luksClose $1 } function mount_cryptdevice() { if [[ -e "/dev/mapper/$1" ]]; then sudo mount /dev/mapper/$1 /mnt/$1 if [ $1 = "media" ]; then sudo mount --bind /mnt/media/music /mnt/music sudo mount --bind /mnt/media/photos /mnt/photos if [ ! -h ~/.cache/shotwell ]; then ln -s /mnt/photos/shotwell/ ~/.cache/shotwell fi fi else echo "Error: Device /dev/mapper/$1 is not available." return 1 fi } function unmount_cryptdevice() { if [ $1 = "media" ]; then /usr/bin/sudo /usr/bin/umount /mnt/{music,photos} fi /usr/bin/sudo /usr/bin/umount /mnt/$1 } case $1 in "open") case $2 in "storage") open_cryptdevice $storage $2 ;; "music") open_cryptdevice $music $2 ;; "photos") open_cryptdevice $photos $2 ;; "backup") open_cryptdevice $backup $2 ;; "video") open_cryptdevice $video $2 ;; "videobackup") open_cryptdevice $videobackup $2 ;; "media") open_cryptdevice $media $2 ;; "mediabackup") open_cryptdevice $mediabackup $2 ;; "audiobackup") open_cryptdevice $audiobackup $2 ;; esac mount_cryptdevice $2 ;; "close") unmount_cryptdevice $2 close_cryptdevice $2 ;; esac