#!/bin/bash ########################################################################### # # Copyright (c) 2022-2023 Diality Inc. - All Rights Reserved. # # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # @file crypt_setup.sh # # @author (last) Behrouz NematiPour # @date (last) 15-May-2023 # @author (original) Behrouz NematiPour # @date (original) 15-May-2023 # ############################################################################ ERR_CRYPTSETUP_UNKNOWN=100 ERR_CRYPTSETUP_USAGE=101 ERR_CRYPTSETUP_PASSWORD=102 ERR_CRYPTSETUP_UMOUNT=111 ERR_CRYPTSETUP_CLOSE=112 ERR_CRYPTSETUP_CREATE_MKDIR=121 ERR_CRYPTSETUP_CREATE_FORMAT=122 ERR_CRYPTSETUP_CREATE_OPEN=123 ERR_CRYPTSETUP_CREATE_MKFS=124 ERR_CRYPTSETUP_CREATE_MOUNT=125 ERR_CRYPTSETUP_MOUNT_OPEN=131 ERR_CRYPTSETUP_MOUNT_MOUNT=132 LOC_DEV="/dev/mmcblk0p7" LOC_DIR="configurations" LOC_MAP="/dev/mapper/"$LOC_DIR LOC_VAR="/var/"$LOC_DIR function checkPassword() { if [ "$PASSWORD" == "" ]; then echo "setup command missing password argument" exit $ERR_CRYPTSETUP_PASSWORD fi } function checkOutput() { if [ "$3" == "" ]; then out=` eval "$1" 2>&1` else out=`echo $3 | eval "$1" 2>&1` fi if [ "$?" -ne 0 ]; then echo $out exit $2 fi } function unmount_luks_partition() { checkOutput "umount $LOC_VAR " $ERR_CRYPTSETUP_UNMOUNT_UNMOUNT checkOutput "cryptsetup luksClose $LOC_DIR " $ERR_CRYPTSETUP_UNMOUNT_CLOSE } function create_luks_partition() { umount_luks_partition checkOutput "mkdir -p $LOC_VAR " $ERR_CRYPTSETUP_CREATE_MKDIR checkOutput "cryptsetup luksFormat $LOC_DEV " $ERR_CRYPTSETUP_CREATE_FORMAT $PASSWORD checkOutput "cryptsetup luksOpen $LOC_DEV $LOC_DIR" $ERR_CRYPTSETUP_CREATE_OPEN $PASSWORD checkOutput "mkfs.ext4 $LOC_MAP " $ERR_CRYPTSETUP_CREATE_MKFS checkOutput "mount -t ext4 $LOC_MAP $LOC_VAR" $ERR_CRYPTSETUP_CREATE_MOUNT } function mount_luks_partition() { checkOutput "cryptsetup luksOpen $LOC_DEV $LOC_DIR" $ERR_CRYPTSETUP_MOUNT_OPEN $PASSWORD checkOutput "mount -t ext4 $LOC_MAP $LOC_VAR" $ERR_CRYPTSETUP_MOUNT_MOUNT } function handleCommand() { # Handle the first argument to script, one of start, stop, erase, restart, force-reload or status case $1 in setup) checkPassword create_luks_partition ;; mount) checkPassword mount_luks_partition ;; umount) unmount_luks_partition ;; *) echo "unknown command" exit $ERR_CRYPTSETUP_UNKNOWN ;; esac } handleCommand $1 $2 exit 0