diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/zfs-open-documents.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/zfs-open-documents.sh b/scripts/zfs-open-documents.sh new file mode 100755 index 0000000..2188c59 --- /dev/null +++ b/scripts/zfs-open-documents.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +DATASET="iron-wolf/media/documents" +MOUNTPOINT=$(zfs get -H -o value mountpoint "$DATASET") + +if [ "$KEYSTATUS" = "available" ]; then + if ! mountpoint -q "$MOUNTPOINT"; then + sudo zfs mount "$DATASET" || { zenity --error --text="Failed to mount dataset."; exit 1; } + fi +else + # Key is unavailable. Prompt for it. + PASS=$(zenity --password --title="Unlock ZFS Volume" --window-icon="lock") + + # If user hits cancel or leaves it empty, exit quietly + if [ -z "$PASS" ]; then + exit 0 + fi + + # Try to load key and mount + if echo "$PASS" | sudo zfs load-key "$DATASET"; then + sudo zfs mount "$DATASET" || { zenity --error --text="Key loaded, but mount failed."; exit 1; } + else + zenity --error --text="Incorrect passphrase." + exit 1 + fi +fi + +if command -v kioclient &> /dev/null; then + kioclient exec "$MOUNTPOINT" +else + xdg-open "$MOUNTPOINT" +fi; |
