aboutsummaryrefslogtreecommitdiffstats
path: root/wire-desktop/bash-aliases
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--wire-desktop/bash-aliases46
1 files changed, 34 insertions, 12 deletions
diff --git a/wire-desktop/bash-aliases b/wire-desktop/bash-aliases
index 0fe1b9e..dfc0d2b 100644
--- a/wire-desktop/bash-aliases
+++ b/wire-desktop/bash-aliases
@@ -1,20 +1,42 @@
# -*- shell-script -*-
mount-wire () {
- gpg --decrypt ~/.var/opt/wire/WireCrypt.key | \
- asroot env XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" WIRE_DIR=~/.var/opt/wire sh -ec '
- device="$(losetup --show -f -P "${WIRE_DIR}/WireCrypt.img")"
- printf "%s\n" "${device}" > "${XDG_RUNTIME_DIR}/WireCrypt"
- cryptsetup -d - open "${device}" WireCrypt
- mount /dev/mapper/WireCrypt "${WIRE_DIR}/WireCrypt.d"
- '
+ if mountpoint -q -- ~/.var/opt/wire/WireCrypt.d; then
+ printf '%s\n' 'mount-wire: already mounted' >&2
+ elif test -e /dev/mapper/WireCrypt; then
+ asroot env WIRE_DIR=~/.var/opt/wire sh -ec \
+ 'mount -- /dev/mapper/WireCrypt "${WIRE_DIR}/WireCrypt.d"'
+ else
+ gpg --decrypt ~/.var/opt/wire/WireCrypt.key | \
+ key2root -k WireCrypt env \
+ WIRE_IMG=~/.var/opt/wire/WireCrypt.img \
+ WIRE_DIR=~/.var/opt/wire \
+ WIRE_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
+ sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/wire/WireCrypt.img)"'$#\1#p' | sed 1q)" \
+ sh -ec '
+ if test -z "${WIRE_DEV}"; then
+ WIRE_DEV="$(losetup --show -f -P "${WIRE_IMG}")"
+ fi
+ cryptsetup -d - open "${WIRE_DEV}" WireCrypt
+ mount -- /dev/mapper/WireCrypt "${WIRE_DIR}/WireCrypt.d"
+ '
+ fi
}
umount-wire () {
- asroot env XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" WIRE_DIR=~/.var/opt/wire sh -c '
- umount "${WIRE_DIR}/WireCrypt.d"
- cryptsetup close WireCrypt
- losetup -d "$(cat -- "${XDG_RUNTIME_DIR}/WireCrypt")"
- rm -f -- "${XDG_RUNTIME_DIR}/WireCrypt"
+ asroot env \
+ WIRE_DIR=~/.var/opt/wire \
+ WIRE_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
+ sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/wire/WireCrypt.img)"'$#\1#p' | sed 1q)" \
+ sh -c '
+ if mountpoint -q -- "${WIRE_DIR}/WireCrypt.d"; then
+ umount -- "${WIRE_DIR}/WireCrypt.d"
+ fi
+ if test -e /dev/mapper/WireCrypt; then
+ cryptsetup close WireCrypt
+ fi
+ if test -n "${WIRE_DEV}"; then
+ losetup -d "${WIRE_DEV}"
+ fi
'
}