#!/usr/bin/env bash
# ==========================================
# HX-KI FALKENSTEIN - BIRTH CERTIFICATE V1.0
# ==========================================

set -euo pipefail

# Basispfade
REPORT_DIR="/opt/hx-ki/reports"
mkdir -p "$REPORT_DIR"

TIMESTAMP="$(date +"%Y-%m-%d_%H%M%S")"
REPORT_FILE="${REPORT_DIR}/hxki_falkenstein_birth_certificate_${TIMESTAMP}.txt"

# Header
{
  echo "==============================================="
  echo " HX-KI SYSTEM GEBURTSURKUNDE – FALKENSTEIN"
  echo "==============================================="
  echo "Erzeugt am: $(date)"
  echo
} > "$REPORT_FILE"

# 1) Server-Basisdaten
{
  echo "1) SERVER-BASISDATEN"
  echo "--------------------"
  echo "Hostname:        $(hostname)"
  echo "OS:              $(grep PRETTY_NAME /etc/os-release | cut -d= -f2- | tr -d '\"')"
  echo "Kernel:          $(uname -r)"
  echo "CPU:             $(lscpu | grep 'Model name' | sed 's/Model name:\s*//')"
  echo "CPU Cores:       $(nproc)"
  echo "RAM (gesamt):    $(grep MemTotal /proc/meminfo | awk '{printf \"%.1f GB\", $2/1024/1024}')"
  echo "Swap:            $(grep SwapTotal /proc/meminfo | awk '{printf \"%.1f GB\", $2/1024/1024}')"
  echo "Root-Filesystem: $(df -h / | tail -1 | awk '{print $2 \" gesamt, \" $3 \" belegt, \" $4 \" frei (\" $5 \" genutzt)\"}')"
  echo
} >> "$REPORT_FILE"

# 2) Docker / Container / Services
{
  echo "2) DOCKER & CONTAINERZUSTAND"
  echo "----------------------------"
  if command -v docker >/dev/null 2>&1; then
    echo "Docker Version: $(docker --version)"
    echo
    echo "Laufende Container:"
    docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" || echo "Keine laufenden Container gefunden."
  else
    echo "Docker ist nicht installiert oder nicht im PATH."
  fi
  echo
} >> "$REPORT_FILE"

# 3) Wichtige HX-KI-Komponenten erkennen
{
  echo "3) HX-KI KOMPONENTEN – FALKENSTEIN"
  echo "----------------------------------"
  echo "Hinweis: Erkennung über Container-Namen (hxki-*)"

  if command -v docker >/dev/null 2>&1; then
    # Liste typischer Dienste
    SERVICES=(
      "hxki-gitea"
      "hxki-grafana"
      "hxki-prometheus"
      "hxki-n8n"
      "hxki-mariadb"
      "hxki-mautic"
      "hxki-syncthing"
      "hxki-nats"
      "hxki-web"
      "hxki-postgres"
      "hxki-mailcow"
    )

    for s in "${SERVICES[@]}"; do
      if docker ps --format '{{.Names}}' | grep -q "^${s}$"; then
        status="$(docker ps --filter "name=${s}" --format '{{.Status}}')"
        image="$(docker ps --filter "name=${s}" --format '{{.Image}}')"
        echo "- ${s}: LAUFEND (${status}, Image: ${image})"
      elif docker ps -a --format '{{.Names}}' | grep -q "^${s}$"; then
        status="$(docker ps -a --filter "name=${s}" --format '{{.Status}}')"
        image="$(docker ps -a --filter "name=${s}" --format '{{.Image}}')"
        echo "- ${s}: INSTALLIERT, ABER NICHT LAUFEND (${status}, Image: ${image})"
      else
        echo "- ${s}: NICHT GEFUNDEN"
      fi
    done
  else
    echo "Docker nicht verfügbar – Komponenten können nicht geprüft werden."
  fi

  echo
} >> "$REPORT_FILE"

# 4) Netzwerke & Ports
{
  echo "4) NETZWERK & PORTS"
  echo "-------------------"
  if command -v docker >/dev/null 2>&1; then
    echo "Docker-Netzwerke:"
    docker network ls || echo "Keine Netzwerke gefunden."
    echo
  fi

  echo "Aktiv lauschende Ports (netstat/ss):"
  if command -v ss >/dev/null 2>&1; then
    ss -tulpn | sed -n '1,50p'
  elif command -v netstat >/dev/null 2>&1; then
    netstat -tulpn | sed -n '1,50p'
  else
    echo "Weder ss noch netstat verfügbar."
  fi
  echo
} >> "$REPORT_FILE"

# 5) HX-KI Verzeichnisstruktur (falls vorhanden)
{
  echo "5) HX-KI VERZEICHNISSTRUKTUR (KURZÜBERSICHT)"
  echo "--------------------------------------------"
  HX_DIR="/opt/hx-ki"
  if [ -d "$HX_DIR" ]; then
    echo "Basisverzeichnis: $HX_DIR"
    echo
    echo "Top-Level-Struktur:"
    find "$HX_DIR" -maxdepth 2 -type d | sed "s|$HX_DIR|/opt/hx-ki|"
  else
    echo "$HX_DIR existiert nicht oder ist nicht erreichbar."
  fi
  echo
} >> "$REPORT_FILE"

# 6) Zusammenfassung
{
  echo "6) KURZZUSAMMENFASSUNG – FALKENSTEIN STATUS"
  echo "-------------------------------------------"
  echo "Dieser Bericht fasst den aktuellen Systemzustand des HX-KI Knotens"
  echo "Falkenstein zusammen (Serverressourcen, Container, Netzwerke, HX-KI"
  echo "Kernkomponenten und Basisstruktur)."
  echo
  echo "Berichtsdatei:"
  echo "  $REPORT_FILE"
  echo
  echo "Hinweis:"
  echo "- Dies ist die 'Geburtsurkunde' des Systemzustands zum Zeitpunkt:"
  echo "  $(date)"
  echo "- Der Bericht kann jederzeit erneut erzeugt werden."
  echo
} >> "$REPORT_FILE"

echo "HX-KI Geburtsurkunde für Falkenstein erstellt:"
echo "  $REPORT_FILE"
