aboutsummaryrefslogblamecommitdiffstats
path: root/wire-desktop/mount-wire
blob: a6dde57f5dc92084767b2dde32dca0fbeef95490 (plain) (tree)




















                                                                                                                               
#!/bin/dash

if mountpoint -q -- "${HOME}/.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="${HOME}/.var/opt/wire" sh -ec \
		'mount -- /dev/mapper/WireCrypt "${WIRE_DIR}/WireCrypt.d"'
else
	gpg --decrypt -- "${HOME}/.var/opt/wire/WireCrypt.key" | \
	key2root -k WireCrypt env \
		WIRE_IMG="${HOME}/.var/opt/wire/WireCrypt.img" \
		WIRE_DIR="${HOME}/.var/opt/wire" \
		WIRE_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
		              sed -n 's#\(/[^ ]*\) '"$(realpath -- "${HOME}/.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