gwoe-antragspruefer/scripts/rotate-debug-token.sh

37 lines
1.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# Auto-Rotation des DEBUG_AUTH_TOKEN-Bypass-Secrets (Phase 11b).
#
# Generiert wöchentlich ein neues Secret, schreibt es in
# /opt/gwoe-antragspruefer-dev/.env und re-creates den Container, damit
# die ENV-Änderung greift.
#
# Cron (Sonntag 04:00):
# 0 4 * * 0 /opt/gwoe-antragspruefer-dev/scripts/rotate-debug-token.sh \
# >> /var/log/gwoe-rotate-debug.log 2>&1
set -euo pipefail
ENV_FILE="/opt/gwoe-antragspruefer-dev/.env"
COMPOSE_FILE="/opt/gwoe-antragspruefer-dev/docker-compose.dev.yml"
if [ ! -f "$ENV_FILE" ]; then
echo "$(date -Iseconds) FAIL — $ENV_FILE not found"
exit 1
fi
NEW_TOKEN=$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")
# Bestehenden Eintrag entfernen, neuen anhängen — atomar via temp-Datei
TMP=$(mktemp)
grep -v "^DEBUG_AUTH_TOKEN=" "$ENV_FILE" > "$TMP"
echo "DEBUG_AUTH_TOKEN=$NEW_TOKEN" >> "$TMP"
mv "$TMP" "$ENV_FILE"
echo "$(date -Iseconds) ROTATED — new token written to $ENV_FILE"
# Container re-creates (compose liest .env nur beim Container-Create).
cd /opt/gwoe-antragspruefer-dev
docker compose -f "$COMPOSE_FILE" up -d --force-recreate
echo "$(date -Iseconds) END"