aboutsummaryrefslogtreecommitdiffstats
path: root/signal-desktop/mount-signal
blob: 6754d0fe6f8744eec4131d6d8196e742300ed2be (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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