aboutsummaryrefslogtreecommitdiffstats
path: root/signal-desktop
diff options
context:
space:
mode:
Diffstat (limited to 'signal-desktop')
-rw-r--r--signal-desktop/Makefile14
-rw-r--r--signal-desktop/bash-aliases46
2 files changed, 41 insertions, 19 deletions
diff --git a/signal-desktop/Makefile b/signal-desktop/Makefile
index 2aa0c96..ce08e1d 100644
--- a/signal-desktop/Makefile
+++ b/signal-desktop/Makefile
@@ -1,20 +1,20 @@
.POSIX:
-include ../common.mk
install:
test -f ~/.var/opt/signal/SignalCrypt.img
test -f ~/.var/opt/signal/SignalCrypt.key
mkdir -p -- ~/.var/opt/signal/SignalCrypt.d
test -e ~/.config/Signal || ln -sf -- ../.var/opt/signal/SignalCrypt.d/Signal ~/.config/Signal
- $(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/signal-desktop
+ test ! -e ~/.config/bash/aliases.d/signal-desktop || \
+ test -L ~/.config/bash/aliases.d/signal-desktop
ln -sf -- ~/.dotfiles/signal-desktop/bash-aliases ~/.config/bash/aliases.d/signal-desktop
uninstall:
+ +! ../check-installed signal-desktop
-unlink -- ~/.config/bash/aliases.d/signal-desktop
-rmdir -- ~/.config/bash/aliases.d
-
-.PHONY: install uninstall
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
'
}