#!/bin/bash
# EdgeGuard OS - Dynamic MOTD
# Zeigt Systemstatus beim Login

OS_VER=$(cat /etc/edgeguard/os-version 2>/dev/null || echo "–")
APP_VER=$(cat /opt/edgeguard/.version 2>/dev/null || echo "–")
HOSTNAME=$(hostname -s)
UPTIME=$(uptime -p 2>/dev/null | sed 's/up //' || echo "–")

# CPU Auslastung
CPU=$(top -bn1 2>/dev/null | awk '/^%?Cpu/ {printf "%.0f", 100-$8; exit}' 2>/dev/null || echo "?")

# RAM
MEM=$(free -h 2>/dev/null | awk '/^Mem:/ {print $3"/"$2}' || echo "?")

# Disk
DISK=$(df -h / 2>/dev/null | awk 'NR==2 {print $3"/"$2" ("$5")"}' || echo "?")

# IP Adresse (erste nicht-loopback IPv4)
IP=$(ip -4 addr show scope global 2>/dev/null | awk '/inet / {print $2}' | head -1 | cut -d/ -f1 || echo "–")

# HA Status
HA_STATUS="Standalone"
if systemctl is-active --quiet keepalived 2>/dev/null; then
    # Prüfe ob eine VIP konfiguriert ist und wer sie hält
    VIP=$(grep -oP '(?<=virtual_ipaddress \{)[^}]*' /etc/keepalived/keepalived.conf 2>/dev/null | \
          grep -oP '\d+\.\d+\.\d+\.\d+' | head -1)
    if [ -n "$VIP" ]; then
        if ip addr show 2>/dev/null | grep -q "$VIP"; then
            HA_STATUS="Cluster Master  (VIP: ${VIP} ACTIVE)"
        else
            HA_STATUS="Cluster Backup  (VIP: ${VIP} standby)"
        fi
    fi
fi

# Container-Status
CONTAINERS_TOTAL=$(docker ps -q 2>/dev/null | wc -l || echo "?")
CONTAINERS_HEALTHY=$(docker ps --filter health=healthy -q 2>/dev/null | wc -l || echo "?")

# Reboot erforderlich?
REBOOT_MSG=""
if [ -f /var/run/reboot-required ]; then
    REBOOT_MSG="\n  \033[1;33m⚠  Neustart empfohlen (Kernel-Update)\033[0m"
fi

printf "\n"
printf "\033[1;34m╔══════════════════════════════════════════════════════════════╗\033[0m\n"
printf "\033[1;34m║\033[0m  \033[1mEdgeGuard OS\033[0m v%-8s  │  App: v%-20s\033[1;34m║\033[0m\n" "$OS_VER" "$APP_VER"
printf "\033[1;34m║\033[0m  Hostname: %-16s │  Uptime: %-19s\033[1;34m║\033[0m\n" "$HOSTNAME" "$UPTIME"
printf "\033[1;34m╠══════════════════════════════════════════════════════════════╣\033[0m\n"
printf "\033[1;34m║\033[0m  IP:  %-56s\033[1;34m║\033[0m\n" "$IP"
printf "\033[1;34m║\033[0m  HA:  %-56s\033[1;34m║\033[0m\n" "$HA_STATUS"
printf "\033[1;34m╠══════════════════════════════════════════════════════════════╣\033[0m\n"
printf "\033[1;34m║\033[0m  CPU: %-5s%%  │  RAM: %-14s │  Disk: %-15s\033[1;34m║\033[0m\n" "$CPU" "$MEM" "$DISK"
printf "\033[1;34m║\033[0m  Container: %s/%s healthy%-38s\033[1;34m║\033[0m\n" "$CONTAINERS_HEALTHY" "$CONTAINERS_TOTAL" ""
printf "\033[1;34m╚══════════════════════════════════════════════════════════════╝\033[0m\n"
printf "\n  Gib '\033[1medgeguard\033[0m' ein um die EdgeGuard Shell zu starten.\n"
printf "  GUI erreichbar unter: \033[1;36mhttps://%s:3000\033[0m\n" "$IP"
if [ -n "$REBOOT_MSG" ]; then
    printf "$REBOOT_MSG\n"
fi
printf "\n"
