summaryrefslogtreecommitdiff
path: root/core/utils/vault_utils.sh
diff options
context:
space:
mode:
Diffstat (limited to 'core/utils/vault_utils.sh')
-rwxr-xr-xcore/utils/vault_utils.sh41
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"
+}