#!/bin/bash
# Nutzung: maldet_scan.sh <pfad> <tage>
# Rückgabewert:
#   0 = keine Malware gefunden
#   1 = Malware gefunden
#   2 = Fehler (Pfad ungültig oder Maldet-Problem)

set -euo pipefail

PATH_TO_SCAN="${1:-}"
DAYS="${2:-}"

if [ -z "$PATH_TO_SCAN" ] || [ -z "$DAYS" ]; then
  echo "Verwendung: $0 <Pfad> <Tage>" >&2
  exit 2
fi
if [ ! -d "$PATH_TO_SCAN" ]; then
  echo "Fehler: Pfad $PATH_TO_SCAN existiert nicht." >&2
  exit 2
fi

MALDET_BIN="$(command -v maldet || echo /usr/local/maldetect/maldet)"
if [ ! -x "$MALDET_BIN" ]; then
  echo "Fehler: Maldet nicht gefunden." >&2
  exit 2
fi

DATE=$(date +%F)
REPORT_FILE="$PATH_TO_SCAN/htdocs/logs/malware_detect_report_${DATE}.txt"
TMP_OUT="$(mktemp)"
trap 'rm -f "$TMP_OUT"' EXIT

# Scan ausführen
"$MALDET_BIN" -r "$PATH_TO_SCAN" "$DAYS" --config-option scan_clamscan=0 >"$TMP_OUT" 2>&1 || true

# Scan-ID extrahieren
SCAN_ID=$(grep -oE '([0-9]{6}|[0-9]{8})-[0-9]{4}\.[0-9]+' "$TMP_OUT" | tail -n1)

# Pager  / Editor unterdrücken
export EDITOR=cat PAGER=cat LESS=FRX TERM=dumb

if [ -n "$SCAN_ID" ]; then
  "$MALDET_BIN" --report "$SCAN_ID" >"$REPORT_FILE" 2>&1 || true
else
  echo "Keine Scan-ID gefunden – kein Report erstellt." >"$REPORT_FILE"
  exit 2
fi

# Rückgabewert ermitteln
if grep -q "TOTAL HITS:[[:space:]]*0" "$REPORT_FILE"; then
  #echo "CLEAN"
  exit 0   # kein Fund
else
  #echo "ALERT"
  exit 1   # Fund(e)
fi