diff options
Diffstat (limited to 'core/utils/vault_utils.sh')
| -rwxr-xr-x | core/utils/vault_utils.sh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/core/utils/vault_utils.sh b/core/utils/vault_utils.sh new file mode 100755 index 0000000..702265f --- /dev/null +++ b/core/utils/vault_utils.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Utility: vault_utils +# Description: Funciones para acceso seguro al vault de ShFlow +# License: GPLv3 +# Author: Luis GuLo +# Version: 1.1.0 +# Dependencies: gpg + +VAULT_DIR="${VAULT_DIR:-core/vault}" +VAULT_KEY="${VAULT_KEY:-$HOME/.shflow.key}" + +# 🧩 Cargar render_msg si no está disponible +PROJECT_ROOT="${SHFLOW_HOME:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}" +COMMON_LIB="$PROJECT_ROOT/core/lib/translate_msg.sh" +if ! declare -f render_msg &>/dev/null; then + [[ -f "$COMMON_LIB" ]] && source "$COMMON_LIB" +fi + +# 🌐 Cargar traducciones +lang="${SHFLOW_LANG:-es}" +trfile="$PROJECT_ROOT/core/utils/vault_utils.tr.${lang}" +declare -A tr +if [[ -f "$trfile" ]]; then while IFS='=' read -r k v; do tr["$k"]="$v"; done < "$trfile"; fi + +get_secret() { + local key="$1" + local value + + if [ ! -f "$VAULT_DIR/$key.gpg" ]; then + echo "$(render_msg "${tr[missing]}" "key=$key" "dir=$VAULT_DIR")" + return 1 + fi + + value=$(gpg --quiet --batch --yes --passphrase-file "$VAULT_KEY" -d "$VAULT_DIR/$key.gpg" 2>/dev/null) + if [ $? -ne 0 ]; then + echo "$(render_msg "${tr[decrypt_fail]}" "key=$key")" + return 1 + fi + + echo "$value" +} |
