aboutsummaryrefslogtreecommitdiffstats
path: root/signal-desktop/mount-signal
diff options
context:
space:
mode:
Diffstat (limited to 'signal-desktop/mount-signal')
-rwxr-xr-xsignal-desktop/mount-signal22
1 files changed, 22 insertions, 0 deletions
diff --git a/signal-desktop/mount-signal b/signal-desktop/mount-signal
new file mode 100755
index 0000000..6754d0f
--- /dev/null
+++ b/signal-desktop/mount-signal
@@ -0,0 +1,22 @@
+#!/bin/dash
+
+if mountpoint -q -- "${HOME}/.var/opt/signal/SignalCrypt.d"; then
+ printf '%s\n' 'mount-signal: already mounted' >&2
+elif test -e /dev/mapper/SignalCrypt; then
+ asroot env SIGNAL_DIR="${HOME}/.var/opt/signal" sh -ec \
+ 'mount -- /dev/mapper/SignalCrypt "${SIGNAL_DIR}/SignalCrypt.d"'
+else
+ gpg --decrypt -- "${HOME}/.var/opt/signal/SignalCrypt.key" | \
+ key2root -k SignalCrypt env \
+ SIGNAL_IMG="${HOME}/.var/opt/signal/SignalCrypt.img" \
+ SIGNAL_DIR="${HOME}/.var/opt/signal" \
+ SIGNAL_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
+ sed -n 's#\(/[^ ]*\) '"$(realpath -- "${HOME}/.var/opt/signal/SignalCrypt.img")"'$#\1#p' | sed 1q)" \
+ sh -ec '
+ if test -z "${SIGNAL_DEV}"; then
+ SIGNAL_DEV="$(losetup --show -f -P "${SIGNAL_IMG}")"
+ fi
+ cryptsetup -d - -- open "${SIGNAL_DEV}" SignalCrypt
+ mount -- /dev/mapper/SignalCrypt "${SIGNAL_DIR}/SignalCrypt.d"
+ '
+fi