#!/bin/bash
# install-banner.sh

# Prüfen root
if [[ $EUID -ne 0 ]]; then
    echo "Bitte als root ausführen."
    exit 1
fi


# Prüfen Root
if [[ $EUID -ne 0 ]]; then
    echo "Bitte als root ausführen."
    exit 1
fi

# Flag setzen: läuft Script non-interactive (mindestens ADMIN gesetzt)?
NONINTERACTIVE=false
if [ -n "$ADMIN" ]; then
    NONINTERACTIVE=true
fi

# Pflichtvariablen
if [ -z "$ADMIN" ]; then
    read -rp "Admin Name: " ADMIN
fi

if [ -z "$HOSTER" ]; then
    read -rp "Hoster: " HOSTER
fi

if [ -z "$ROLE" ]; then
    read -rp "Serverrolle / Anwendung: " ROLE
fi

if [ -z "$BANNER_LINE" ]; then
    read -rp "Bannertext (eine Zeile): " BANNER_LINE
fi

# Optionale Variablen:
if [ "$NONINTERACTIVE" = true ]; then
    # Non-interactive: einfach leer lassen, wenn nicht gesetzt
    SERVERNAME="${SERVERNAME:-}"
    SERVERURL="${SERVERURL:-}"
else
    # Interaktiv: Nutzer fragen, wenn leer
    if [ -z "$SERVERNAME" ]; then
        read -rp "Server NAME (optional): " SERVERNAME
    fi
    if [ -z "$SERVERURL" ]; then
        read -rp "Server URL (optional): " SERVERURL
    fi
fi


# Dependencies prüfen
DEPS=(figlet)
MISSING=()
for dep in "${DEPS[@]}"; do
    if ! command -v "$dep" &> /dev/null; then
        MISSING+=("$dep")
    fi
done

INSTALL="Y"
if [ ${#MISSING[@]} -gt 0 ]; then
    echo "Folgende Dependencies fehlen: ${MISSING[*]}"
    read -rp "Möchtest du sie installieren? [y/N]: " INSTALL
    if [[ "$INSTALL" =~ ^[Yy]$ ]]; then
        if command -v apt &> /dev/null; then
            apt update && apt install -y "${MISSING[@]}"
        elif command -v yum &> /dev/null; then
            yum install -y "${MISSING[@]}"
        elif command -v dnf &> /dev/null; then
            dnf install -y "${MISSING[@]}"
        else
            echo "Kein unterstützter Paketmanager. Bitte manuell installieren."
            exit 1
        fi
    else
        echo "Installation abgebrochen."
        exit 1
    fi
fi

# Pfade
MOTD_DIR="/etc/update-motd.d"
DEACT_DIR="${MOTD_DIR}/deactivated"
MOTD_SCRIPT="${MOTD_DIR}/10-banner"

mkdir -p "$DEACT_DIR"

# Andere Module deaktivieren
for f in "$MOTD_DIR"/*; do
    if [[ "$f" != "$MOTD_SCRIPT" && -f "$f" ]]; then
        mv "$f" "$DEACT_DIR/"
    fi
done

CYAN='\033[1;36m'
PINK='\033[38;5;205m'
RESET='\033[0m'

# MOTD-Skript erstellen
cat > "$MOTD_SCRIPT" <<EOF
#!/bin/bash

RESET=\$'\033[0m'
PINK=\$'\033[38;5;205m'
MAGENTA=\$'\033[1;35m'
PINKS=( \$'\033[38;5;219m' \$'\033[38;5;212m' \$'\033[38;5;205m' \$'\033[38;5;198m' \$'\033[38;5;199m' )
NUM_COLORS=\${#PINKS[@]}
[ \$NUM_COLORS -eq 0 ] && PINKS=(\"\$RESET\") && NUM_COLORS=1

# Vom Installer gesetzte Variablen
ADMIN="$ADMIN"
HOSTER="$HOSTER"
ROLE="$ROLE"
SERVERNAME="$SERVERNAME"
SERVERURL="$SERVERURL"
BANNER_LINE="$BANNER_LINE"

# Dynamische Infos
HOSTNAME=\$(hostname)
UPTIME=\$(uptime -p)
KERNEL=\$(uname -r)
DISTRO=\$(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"')
MEM=\$(free -h | awk '/Mem:/ {print \$3 "/" \$2}')
CPU=\$(lscpu | awk -F: '/Model name/ {print \$2; exit}' | sed 's/^ *//')
PRIVATE_IP=$(hostname -I | awk '{print $1}')

# Banner
i=0
while IFS= read -r line; do
    COLOR=\${PINKS[\$((i % NUM_COLORS))]}
    printf "%b%s%b\n" "\$COLOR" "\$line" "\$RESET"
    ((i++))
done < <(figlet -f slant "\$BANNER_LINE")

# Ausgabe
echo
echo -e "${MAGENTA}Linux Server managed by ${ADMIN}${RESET}"
echo
[[ -n "$SERVERNAME" ]] && echo -e "🌐	${PINK}Servername:	${RESET} ${SERVERNAME}"
[[ -n "$SERVERURL" ]]  && echo -e "🌐	${PINK}Server-URL:	${RESET} ${SERVERURL}"
echo -e "🌐	${PINK}Hostname:	${RESET} ${HOSTNAME}"
echo -e "📌	${PINK}Role:		${RESET} ${ROLE}"
echo -e "💻	${PINK}Hoster:		${RESET} ${HOSTER}"
EOF

cat >> "$MOTD_SCRIPT" <<'EOF'
echo -e "ℹ️	${PINK}IP-Adress:	${RESET} ${PRIVATE_IP}"
echo -e "🖥	${PINK}Distro:		${RESET} ${DISTRO}"
echo -e "🔧	${PINK}Kernel:		${RESET} ${KERNEL}"
echo -e "⚡	${PINK}CPU:		${RESET} ${CPU}"
echo -e "📦	${PINK}Memory:		${RESET} ${MEM}"
echo -e "⏱	${PINK}Uptime:		${RESET} ${UPTIME}"
echo
EOF

chmod +x "$MOTD_SCRIPT"
echo "MOTD installiert. Alte Module wurden nach '$DEACT_DIR' verschoben."
