blob: 1a5362baf74869a07e523b4ee1a5dbe45e7d3502 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# -*- shell-script -*-
mount-element () {
if mountpoint -q -- ~/.var/opt/element/ElementCrypt.d; then
printf '%s\n' 'mount-element: already mounted' >&2
elif test -e /dev/mapper/ElementCrypt; then
asroot env ELEMENT_DIR=~/.var/opt/element sh -ec \
'mount -- /dev/mapper/ElementCrypt "${ELEMENT_DIR}/ElementCrypt.d"'
else
gpg --decrypt ~/.var/opt/element/ElementCrypt.key | \
key2root -k ElementCrypt env \
ELEMENT_IMG=~/.var/opt/element/ElementCrypt.img \
ELEMENT_DIR=~/.var/opt/element \
ELEMENT_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/element/ElementCrypt.img)"'$#\1#p' | sed 1q)" \
sh -ec '
if test -z "${ELEMENT_DEV}"; then
ELEMENT_DEV="$(losetup --show -f -P "${ELEMENT_IMG}")"
fi
cryptsetup -d - open "${ELEMENT_DEV}" ElementCrypt
mount -- /dev/mapper/ElementCrypt "${ELEMENT_DIR}/ElementCrypt.d"
'
fi
}
umount-element () {
asroot env \
ELEMENT_DIR=~/.var/opt/element \
ELEMENT_DEV="$(losetup | sed 's/\s\+/ /g' | cut -d ' ' -f 1,6 | \
sed -n 's#\(/[^ ]*\) '"$(realpath -- ~/.var/opt/element/ElementCrypt.img)"'$#\1#p' | sed 1q)" \
sh -c '
if mountpoint -q -- "${ELEMENT_DIR}/ElementCrypt.d"; then
umount -- "${ELEMENT_DIR}/ElementCrypt.d"
fi
if test -e /dev/mapper/ElementCrypt; then
cryptsetup close ElementCrypt
fi
if test -n "${ELEMENT_DEV}"; then
losetup -d "${ELEMENT_DEV}"
fi
'
}
|