diff options
Diffstat (limited to '')
-rw-r--r-- | signal-desktop/bash-aliases | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/signal-desktop/bash-aliases b/signal-desktop/bash-aliases index a2669ab..a50c8f6 100644 --- a/signal-desktop/bash-aliases +++ b/signal-desktop/bash-aliases @@ -1,20 +1,42 @@ # -*- shell-script -*- mount-signal () { - gpg --decrypt ~/.var/opt/signal/SignalCrypt.key | \ - asroot env XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" SIGNAL_DIR=~/.var/opt/signal sh -ec ' - device="$(losetup --show -f -P "${SIGNAL_DIR}/SignalCrypt.img")" - printf "%s\n" "${device}" > "${XDG_RUNTIME_DIR}/SignalCrypt" - cryptsetup -d - open "${device}" SignalCrypt - mount /dev/mapper/SignalCrypt "${SIGNAL_DIR}/SignalCrypt.d" - ' + if mountpoint -q -- ~/.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=~/.var/opt/signal sh -ec \ + 'mount -- /dev/mapper/SignalCrypt "${SIGNAL_DIR}/SignalCrypt.d"' + else + gpg --decrypt ~/.var/opt/signal/SignalCrypt.key | \ + key2root -k SignalCrypt env \ + SIGNAL_IMG=~/.var/opt/signal/SignalCrypt.img \ + SIGNAL_DIR=~/.var/opt/signal \ + SIGNAL_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \ + sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.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 } umount-signal () { - asroot env XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" SIGNAL_DIR=~/.var/opt/signal sh -c ' - umount "${SIGNAL_DIR}/SignalCrypt.d" - cryptsetup close SignalCrypt - losetup -d "$(cat -- "${XDG_RUNTIME_DIR}/SignalCrypt")" - rm -f -- "${XDG_RUNTIME_DIR}/SignalCrypt" + asroot env \ + SIGNAL_DIR=~/.var/opt/signal \ + SIGNAL_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \ + sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/signal/SignalCrypt.img)"'$#\1#p' | sed 1q)" \ + sh -c ' + if mountpoint -q -- "${SIGNAL_DIR}/SignalCrypt.d"; then + umount -- "${SIGNAL_DIR}/SignalCrypt.d" + fi + if test -e /dev/mapper/SignalCrypt; then + cryptsetup close SignalCrypt + fi + if test -n "${SIGNAL_DEV}"; then + losetup -d "${SIGNAL_DEV}" + fi ' } |