diff options
Diffstat (limited to 'wire-desktop')
-rw-r--r-- | wire-desktop/Makefile | 14 | ||||
-rw-r--r-- | wire-desktop/bash-aliases | 46 |
2 files changed, 41 insertions, 19 deletions
diff --git a/wire-desktop/Makefile b/wire-desktop/Makefile index 41e4b5a..60a1b18 100644 --- a/wire-desktop/Makefile +++ b/wire-desktop/Makefile @@ -1,20 +1,20 @@ .POSIX: -include ../common.mk install: test -f ~/.var/opt/wire/WireCrypt.img test -f ~/.var/opt/wire/WireCrypt.key mkdir -p -- ~/.var/opt/wire/WireCrypt.d test -e ~/.config/Wire || ln -sf -- ../.var/opt/wire/WireCrypt.d/Wire ~/.config/Wire - $(CHECK_INSTALLED) asroot - $(CHECK_INSTALLED) gnupg - $(CHECK_INSTALLED) cryptsetup + ../check-any-installed asroot asroot-libpassphrase + ../check-installed gnupg + ../check-installed cryptsetup + ../check-installed key2root mkdir -p -- ~/.config/bash/aliases.d - test ! -d ~/.config/bash/aliases.d/wire-desktop + test ! -e ~/.config/bash/aliases.d/wire-desktop || \ + test -L ~/.config/bash/aliases.d/wire-desktop ln -sf -- ~/.dotfiles/wire-desktop/bash-aliases ~/.config/bash/aliases.d/wire-desktop uninstall: + +! ../check-installed wire-desktop -unlink -- ~/.config/bash/aliases.d/wire-desktop -rmdir -- ~/.config/bash/aliases.d - -.PHONY: install uninstall 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 ' } |