diff --git a/spielspass/dmcrypt-wrapper.sh b/spielspass/dmcrypt-wrapper.sh new file mode 100755 index 0000000..559bab5 --- /dev/null +++ b/spielspass/dmcrypt-wrapper.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# a simple wrapper around cryptdisks to: +# mount after cryptsetup +# umount before cryptsetup + +# break on error or undefined variables +set -eu + + +crypt_mount() +{ + local partitions=`dmsetup ls | grep -v "No devices found" | cut -f1` + for i in $partitions; do + if mount | grep -q "^/dev/mapper/$i$" + then echo -en "\t$i (mounting)" + mount "/dev/mapper/$i" &>/dev/null || echo -en " (\"mount /dev/mapper/$i\" failed)" >&2 + fi + done +} + + +crypt_umount() +{ + local partitions=`dmsetup ls | grep -v "No devices found" | cut -f1` + for i in $partitions; do + if mount | grep -q "^/dev/mapper/$i$" + then true + else + echo -en "\t$i (unmounting)" + umount "/dev/mapper/$i" &>/dev/null || echo -en " (\"umount /dev/mapper/$i\" failed)" >&2 + fi + done +} + + +########### do it! ############## + +ACTION=help +[ $# -gt 0 ] && ACTION="$1" + +case "$ACTION" in + start|retry ) + /etc/init.d/cryptdisks start + crypt_mount + ;; + stop ) + crypt_umount + /etc/init.d/cryptdisks stop + ;; + restart|reload|force-reload ) + $0 stop + $0 start + ;; + * ) + echo "Syntax: `basename $0` { start | stop | restart | retry | reload | force-reload | help }" + ;; + esac +