Token caching

This commit is contained in:
2026-02-10 16:17:29 +01:00
parent b4658f3279
commit 4fe26a23af
2 changed files with 31 additions and 18 deletions

View File

@@ -1,21 +1,33 @@
#!/usr/bin/env bash
if [ "$1" = "get" ]; then
# Prüfen, ob die Session-Variable da ist
if [ -z "$BW_SESSION" ]; then
echo "FEHLER: Bitwarden ist gesperrt! Bitte 'unlock' ausführen." >&2
exit 1
CACHE_FILE="/tmp/git_bw_token_$USER"
get_credentials() {
# 1. Versuch: Cache laden
if [ -f "$CACHE_FILE" ]; then
cat "$CACHE_FILE"
return
fi
# Das gesamte Item einmal holen, um nicht mehrfach anfragen zu müssen
ITEM_JSON=$(bw get item gitea.iten.pro 2>/dev/null)
if [ -n "$ITEM_JSON" ]; then
# Benutzername extrahieren
USER=$(echo "$ITEM_JSON" | jq -r '.login.username')
# Token aus den Custom Fields extrahieren
TOKEN=$(echo "$ITEM_JSON" | jq -r '.fields[] | select(.name=="Token") | .value')
echo "username=$USER"
echo "password=$TOKEN"
# 2. Versuch: Bitwarden abfragen (nur wenn BW_SESSION da ist)
if [ -n "$BW_SESSION" ]; then
# Hier dein bw-Befehl (Beispielhaft)
TOKEN=$(bw get item gitea.iten.pro | jq -r '.login.password')
USER_NAME=$(bw get item gitea.iten.pro | jq -r '.login.username')
if [ -n "$TOKEN" ]; then
OUT="username=$USER_NAME\npassword=$TOKEN"
echo -e "$OUT" > "$CACHE_FILE"
chmod 600 "$CACHE_FILE"
echo -e "$OUT"
return
fi
fi
fi
printf "\033[1;31mFEHLER:\033[0m Bitwarden ist gesperrt! Bitte '\033[1munlock\033[22m' ausführen.\n" >&2
exit 1
}
case "$1" in
get) get_credentials ;;
store|erase) ;; # Git verlangt diese Endpunkte, wir ignorieren sie
esac

View File

@@ -9,7 +9,8 @@ unlock() {
}
lock() {
rm -f "/tmp/git_bw_token_$USER"
bw lock > /dev/null
unset BW_SESSION
echo "🔒 Tresor gesperrt und Session gelöscht."
echo "🔒 Tresor gesperrt, Cache geleert und Session gelöscht."
}