#!/bin/bash
# Copyparty Upload Hook - Aktualisiert MD5-Checksums nach Upload
# Wird von copyparty --xau aufgerufen
# Parameter: $1 = vollständiger Dateipfad

FULL_PATH="$1"
BUILDS_DIR="/srv/builds"
MD5_FILE="$BUILDS_DIR/md5sum.txt"
LOG_FILE="/home/sam/logs/upload-hook.log"

# Log
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Upload: $FULL_PATH" >> "$LOG_FILE"

# Prüfe ob Datei existiert
if [ ! -f "$FULL_PATH" ]; then
    echo "  -> Error: File not found" >> "$LOG_FILE"
    exit 0
fi

# Extrahiere relativen Pfad
RELATIVE_PATH="${FULL_PATH#$BUILDS_DIR/}"

# Prüfe ob es ein relevanter Dateityp ist
if [[ ! "$RELATIVE_PATH" =~ \.(AppImage|pdf|deb|rpm|tar\.gz|tar\.xz|tar\.bz2|zip)$ ]]; then
    echo "  -> Skipped (not relevant file type)" >> "$LOG_FILE"
    exit 0
fi

# Wechsle in builds-Verzeichnis für relative Pfade
cd "$BUILDS_DIR" || exit 1

# Berechne MD5
NEW_MD5=$(md5sum "$RELATIVE_PATH" 2>/dev/null)

if [ -n "$NEW_MD5" ]; then
    # Entferne alte Einträge für diese Datei (falls bereits vorhanden)
    if [ -f "$MD5_FILE" ]; then
        grep -v "  $RELATIVE_PATH\$" "$MD5_FILE" > "$MD5_FILE.tmp" 2>/dev/null || true
        mv "$MD5_FILE.tmp" "$MD5_FILE" 2>/dev/null || true
    fi

    # Füge neuen Eintrag hinzu
    echo "$NEW_MD5" >> "$MD5_FILE"
    chmod 644 "$MD5_FILE"

    echo "  -> MD5 added: $NEW_MD5" >> "$LOG_FILE"
else
    echo "  -> Error calculating MD5" >> "$LOG_FILE"
fi

exit 0
