summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-10-11 23:19:21 +0200
committerJakob Unterwurzacher2016-10-11 23:19:21 +0200
commit7c053e67f27af8cf7ad73f8db9c8622634cbabe8 (patch)
tree3fb0a4397dafbad7b6676f6a0fde38521abdb474
parent72efd3b6c3668191bd596c65caf623571ee12908 (diff)
contrib: add gocryptfs-maybe.bash
Conditionally try to mount a gocryptfs filesystem. If either * CIPHERDIR does not exist OR * something is already mounted on MOUNTPOINT print a message to stdout (not stderr!) but exit with 0. This is meant to be called from automated mount systems like pam_mount, where you want to avoid error messages if the filesystem does not exist, or duplicate mounts if the filesystem has already been mounted.
-rwxr-xr-xcontrib/gocryptfs-maybe.bash28
1 files changed, 28 insertions, 0 deletions
diff --git a/contrib/gocryptfs-maybe.bash b/contrib/gocryptfs-maybe.bash
new file mode 100755
index 0000000..dcfa965
--- /dev/null
+++ b/contrib/gocryptfs-maybe.bash
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+# Conditionally try to mount a gocryptfs filesystem. If either
+# * CIPHERDIR does not exist OR
+# * something is already mounted on MOUNTPOINT
+# print a message to stdout (not stderr!) but exit with 0.
+#
+# This is meant to be called from automated mount systems like pam_mount,
+# where you want to avoid error messages if the filesystem does not exist,
+# or duplicate mounts if the filesystem has already been mounted.
+#
+# Note that pam_mount ignores messages on stdout which is why printing
+# to stdout is ok.
+set -eu
+MYNAME=$(basename $0)
+if [[ $# -lt 2 || $1 == -* ]]; then
+ echo "Usage: $MYNAME CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]" >&2
+ exit 1
+fi
+if [[ ! -f $1/gocryptfs.conf ]]; then
+ echo "$MYNAME: \"$1\" does not look like a gocryptfs filesystem, ignoring mount request"
+ exit 0
+fi
+if mountpoint "$2" > /dev/null; then
+ echo "$MYNAME: something is already mounted on \"$2\", ignoring mount request"
+ exit 0
+fi
+exec gocryptfs "$@"