[arch-projects] [RFC 12/23] Add ct_map function (without support for key device)
Matthew Monaco
dgbaley27 at 0x01b.net
Fri May 18 12:22:06 EDT 2012
From: Matthew Monaco <matthew.monaco at 0x01b.net>
Resolve device, parse options, run cryptsetup and run mkswap if needed
---
cryptmount.sh | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/cryptmount.sh b/cryptmount.sh
index e86323b..d602043 100755
--- a/cryptmount.sh
+++ b/cryptmount.sh
@@ -335,6 +335,72 @@ ct_unmap() {
fi
}
+ct_map() {
+
+<<<<<<< HEAD
+ local name="$1" dev="$2" key="$3" args="" swap=0
+ shift 3
+
+ if [ -e "/dev/mapper/$name" ]; then
+ error "Volume is already mapped ('/dev/mapper/$name' exists')"
+ return 1
+ fi
+
+ # this function sets the args and swap variables
+ if ! ct_parse_options "$@"; then
+ error "Unable to parse options"
+ return 1
+ fi
+ args="$args $OPTIONS"
+
+ # resolve the encrypted device, can't do much without this
+ if ! dev="$(ct_resolve_device "$dev")"; then
+ error "device '$dev' not found"
+ return 1
+ fi
+
+ if [ "$key" ]; then
+ key="--key-file=\"$key\""
+ fi
+
+ local ret=0
+
+ # the main event, run cryptsetup (and mkswap, mkfs if necessary)
+ if cryptsetup isLuks "$dev"; then
+
+ info "device '$dev' detected as LUKS"
+
+ if run cryptsetup luksOpen $key $args "$dev" "$name"; then
+ info "sucessfully mapped '$dev' to '/dev/mapper/$name'"
+ else
+ error "unable to map '$dev' to '/dev/mapper/$name'"
+ ret=1
+ fi
+
+ else
+
+ info "device '$dev' assumed to be plain"
+
+ if run cryptsetup create $key $args "$name" "$dev"; then
+ info "sucessfully mapped '$dev' to '/dev/mapper/$name'"
+ if [ $swap -eq 1 ]; then
+ if run mkswap -f -L "$name" "/dev/mapper/$name"; then
+ info "mkswap successful on '/dev/mapper/$name'"
+ else
+ error "mkswap failed for '/dev/mapper/$name'"
+ ret=1
+ fi
+ fi
+ else
+ error "unable to map '$dev' to '/dev/maper/name/$name'"
+ ret=1
+ fi
+
+ fi
+
+ return $ret
+}
+
ct_resolve_device() {
local tmp="" device="$1" seconds=$WAITTIME tag tagval
--
1.7.10.2
More information about the arch-projects
mailing list