#!/bin/bash

#######################################################
# Das ist das Hauptskript des cert-managers. Hier     #
# werden alle DevIDs aus dem Config-Verzeichnis ein-  #
# gelesen und bei Bedarf enrolled/erneuert.           #
#######################################################

# Pfade definieren
CONFIG_DIR="/etc/cert-manager/conf.d"
BASE_CONFIG="/etc/cert-manager/cert-manager.json"
UTILS_SH="/usr/bin/cert-manager-utils.sh"

source "$UTILS_SH"

# Prüfe ob TPM Device und TSS Stack vorhanden sind
TPM_DEVICE=$(get_config "global.tpm.device" "$BASE_CONFIG")
if [ ! -e "$TPM_DEVICE" ]; then
    echo "Fehler: TPM Device $TPM_DEVICE nicht gefunden. Breche ab."
    exit 1
fi

if ! command -v tpm2_getcap &> /dev/null; then
    echo "Fehler: tpm2-tss Software Stack (tpm2_getcap) nicht installiert. Breche ab."
    exit 1
fi

if [ ! -d "$CONFIG_DIR" ]; then
    echo "Fehler: Verzeichnis $CONFIG_DIR existiert nicht."
    exit 1
fi

echo "Suche nach JSON-Dateien in $CONFIG_DIR..."

FILES_FOUND=0
# Durchgehe alle .json Dateien im Ordner
for file in "$CONFIG_DIR"/*.json; do
    # Prüfen, ob Dateien existieren (vermeidet Fehler, wenn keine Treffer)
    [ -e "$file" ] || continue
    
    FILES_FOUND=$((FILES_FOUND + 1))
    filename=$(basename "$file")
    echo "Konfiguration gefunden: $filename"
    
    # Skript aus der JSON-Datei auslesen
    SCRIPT_NAME=$(get_config "script" "$file")
    
    if [ -n "$SCRIPT_NAME" ] && [ "$SCRIPT_NAME" != "null" ]; then
        SCRIPT_PATH="/usr/bin/$SCRIPT_NAME"
        if [ -f "$SCRIPT_PATH" ]; then
            echo "  Verarbeite $filename..." # 
            # Das Skript wird mit der Pfad zur JSON-Datei als Parameter aufgerufen
            /bin/bash "$SCRIPT_PATH" "$file"
        else
            echo "  Warnung: Skript $SCRIPT_PATH wurde nicht gefunden."
        fi
    else
        echo "  Error: Konfiguration $filename spezifiziert kein Skript"
    fi
done

if [ "$FILES_FOUND" -eq 0 ]; then
    echo "Keine Konfigurationen in $CONFIG_DIR gefunden. Nichts zu tun."
fi
