nbdcs
This commit is contained in:
parent
817924687a
commit
8d7b4f3a9c
1 changed files with 84 additions and 0 deletions
84
nbdcs
Executable file
84
nbdcs
Executable file
|
@ -0,0 +1,84 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
FILE="$(realpath "${BASH_SOURCE[0]}")"
|
||||||
|
NAME="$(basename "${FILE}")"
|
||||||
|
|
||||||
|
ACTION_OPEN='open'
|
||||||
|
ACTION_CLOSE='close'
|
||||||
|
|
||||||
|
DATA_DIRECTORY='/data'
|
||||||
|
CONTAINERS_DIRECTORY="${DATA_DIRECTORY}/containers"
|
||||||
|
|
||||||
|
CONTAINERS_MAP_DIRECTORY='/dev/mapper'
|
||||||
|
CONTAINERS_MOUNT_DIRECTORY='/media'
|
||||||
|
|
||||||
|
function main {
|
||||||
|
local action="${1}"
|
||||||
|
local pass_phrase
|
||||||
|
local container
|
||||||
|
local container_name
|
||||||
|
local container_file
|
||||||
|
local container_map_file
|
||||||
|
local container_mount_directory
|
||||||
|
|
||||||
|
case "${action}" in
|
||||||
|
"${ACTION_OPEN}"|"${ACTION_CLOSE}")
|
||||||
|
shift
|
||||||
|
if [ "${1}" ]; then
|
||||||
|
if [ "${action}" == "${ACTION_OPEN}" ]; then
|
||||||
|
echo -n 'PassPhrase: '
|
||||||
|
read -s pass_phrase
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
for container in "${@}"; do
|
||||||
|
echo
|
||||||
|
case "${container}" in
|
||||||
|
'p') container_name='private' ;;
|
||||||
|
's') container_name='sensitive' ;;
|
||||||
|
'w') container_name='work' ;;
|
||||||
|
*) container_name="${container}" ;;
|
||||||
|
esac
|
||||||
|
container_file="${CONTAINERS_DIRECTORY}/${container_name}"
|
||||||
|
if [ -f "${container_file}" ]; then
|
||||||
|
container_map_file="${CONTAINERS_MAP_DIRECTORY}/${container_name}"
|
||||||
|
container_mount_directory="${CONTAINERS_MOUNT_DIRECTORY}/${container_name}"
|
||||||
|
case "${action}" in
|
||||||
|
"${ACTION_OPEN}")
|
||||||
|
echo "${container_file} → ${container_map_file}"
|
||||||
|
echo "${pass_phrase}" \
|
||||||
|
| cryptsetup luksOpen "${container_file}" "${container_name}"
|
||||||
|
if [ ${?} -eq 0 ]; then
|
||||||
|
mkdir --parents "${container_mount_directory}"
|
||||||
|
echo "${container_map_file} → ${container_mount_directory}"
|
||||||
|
mount "${container_map_file}" "${container_mount_directory}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"${ACTION_CLOSE}")
|
||||||
|
echo "${container_map_file} ← ${container_mount_directory}"
|
||||||
|
umount "${container_map_file}"
|
||||||
|
if [ ${?} -eq 0 ]; then
|
||||||
|
rmdir --ignore-fail-on-non-empty "${container_mount_directory}"
|
||||||
|
echo "${container_file} ← ${container_map_file}"
|
||||||
|
cryptsetup luksClose "${container_name}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo 'This path does not point to a file!'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo 'No container name provided!'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo 'Usage:'
|
||||||
|
echo "${NAME} [${ACTION_OPEN}|${ACTION_CLOSE}] [p] [s] [w]"
|
||||||
|
echo
|
||||||
|
echo 'p = private'
|
||||||
|
echo 's = sensitive'
|
||||||
|
echo 'w = work'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main "${@}"
|
Loading…
Reference in a new issue