Files
ThothII/scripts/secret-file-utils.sh
T

33 lines
836 B
Bash
Executable File

#!/bin/sh
set -eu
validate_secret_file() {
path="$1"
label="$2"
if [ -L "$path" ] || [ ! -f "$path" ] || [ ! -r "$path" ]; then
echo "$label must be a readable regular file, not a symlink: $path" >&2
exit 2
fi
mode=$(stat -c '%a' "$path" 2>/dev/null || stat -f '%Lp' "$path" 2>/dev/null) || {
echo "cannot inspect permissions for $label: $path" >&2
exit 2
}
if [ $((0$mode & 077)) -ne 0 ]; then
echo "$label must not be readable or writable by group/other users: $path" >&2
exit 2
fi
}
read_secret_file() {
path="$1"
label="$2"
validate_secret_file "$path" "$label"
value=$(tr -d '\r' <"$path")
case "$value" in
*'
'*) echo "$label must contain exactly one line" >&2; exit 2 ;;
esac
[ -n "$value" ] || { echo "$label must not be empty" >&2; exit 2; }
printf '%s' "$value"
}