summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/zfs-open-documents.sh32
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;