#!/bin/bash
#
# JavaMail Installation für STARFACE
#
# Dieses Script installiert die JavaMail-Bibliothek auf einer STARFACE-Instanz.
# Benötigt wird nur SSH-Zugriff auf die STARFACE.
#
# Verwendung:
#   ./install-javamail.sh <starface-ip-oder-hostname>
#
# Beispiel:
#   ./install-javamail.sh 192.168.1.100
#   ./install-javamail.sh starface.example.com
#

set -e

# Farben für Terminal-Ausgabe
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# ============================================================
# Parameter prüfen
# ============================================================

if [ $# -eq 0 ]; then
    echo -e "${RED}Fehler: Keine STARFACE-Adresse angegeben${NC}"
    echo ""
    echo "Verwendung:"
    echo "  $0 <starface-ip-oder-hostname>"
    echo ""
    echo "Beispiel:"
    echo "  $0 192.168.1.100"
    echo "  $0 starface.example.com"
    exit 1
fi

STARFACE_HOST=$1
SSH_USER="root"

echo -e "${BLUE}========================================"
echo -e " JavaMail Installation für STARFACE"
echo -e "========================================${NC}"
echo ""
echo -e "STARFACE: ${GREEN}$STARFACE_HOST${NC}"
echo -e "SSH-User: ${GREEN}$SSH_USER${NC}"
echo ""

# ============================================================
# SSH-Verbindung testen
# ============================================================

echo -e "${YELLOW}Teste SSH-Verbindung...${NC}"

if ! ssh -o ConnectTimeout=5 -o BatchMode=yes "${SSH_USER}@${STARFACE_HOST}" "exit" 2>/dev/null; then
    echo -e "${RED}Fehler: SSH-Verbindung fehlgeschlagen${NC}"
    echo ""
    echo "Mögliche Ursachen:"
    echo "  - STARFACE nicht erreichbar"
    echo "  - SSH-Key nicht konfiguriert"
    echo "  - SSH-Dienst nicht erreichbar"
    echo "  - Firewall blockiert Port 22"
    echo ""
    echo "Prüfe die Verbindung mit: ssh ${SSH_USER}@${STARFACE_HOST}"
    exit 1
fi

echo -e "${GREEN}SSH-Verbindung erfolgreich${NC}"
echo ""

# ============================================================
# STARFACE-Bibliothekspfad ermitteln
# ============================================================

LIB_PATH="/opt/tomcat/webapps/localhost/starface/WEB-INF/lib"

echo -e "${YELLOW}Prüfe Verzeichnisstruktur...${NC}"

if ! ssh "${SSH_USER}@${STARFACE_HOST}" "[ -d '$LIB_PATH' ]" 2>/dev/null; then
    echo -e "${RED}Fehler: STARFACE Bibliotheksverzeichnis nicht gefunden${NC}"
    echo "Erwartet: $LIB_PATH"
    exit 1
fi

echo -e "Bibliothekspfad: ${GREEN}$LIB_PATH${NC}"
echo ""

# ============================================================
# Prüfen ob JavaMail bereits installiert ist
# ============================================================

echo -e "${YELLOW}Prüfe ob JavaMail bereits installiert ist...${NC}"

HAS_JAVAMAIL=$(ssh "${SSH_USER}@${STARFACE_HOST}" \
    "ls $LIB_PATH/*mail*.jar 2>/dev/null | head -1" || true)

if [ -n "$HAS_JAVAMAIL" ]; then
    echo -e "${GREEN}JavaMail bereits vorhanden:${NC}"
    ssh "${SSH_USER}@${STARFACE_HOST}" "ls -lh $LIB_PATH/*mail*.jar 2>/dev/null" | while read line; do
        filename=$(echo "$line" | awk '{print $NF}')
        size=$(echo "$line" | awk '{print $5}')
        basename_jar=$(basename "$filename")
        echo -e "  ${GREEN}$basename_jar${NC} ($size)"
    done
    echo ""
    echo -e "${YELLOW}JavaMail ist bereits installiert. Beenden.${NC}"
    echo ""
    echo -e "${GREEN}Falls du die Installation erzwingen möchtest, lösche zuerst die vorhandenen Dateien:${NC}"
    echo "  ssh ${SSH_USER}@${STARFACE_HOST} 'rm $LIB_PATH/*mail*.jar'"
    exit 0
fi

echo -e "${YELLOW}JavaMail nicht gefunden - Installation wird gestartet...${NC}"
echo ""

# ============================================================
# JavaMail-Bibliotheken herunterladen
# ============================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DEPS_DIR="$SCRIPT_DIR/javamail-deps"
mkdir -p "$DEPS_DIR"

echo -e "${YELLOW}Lade JavaMail-Bibliotheken herunter...${NC}"

# javax.mail.jar
if [ ! -f "$DEPS_DIR/javax.mail.jar" ]; then
    echo "  Lade javax.mail.jar (1.6.2) herunter..."
    curl -sL -o "$DEPS_DIR/javax.mail.jar" \
        "https://repo1.maven.org/maven2/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar"
    echo -e "  ${GREEN}javax.mail.jar heruntergeladen${NC}"
else
    echo -e "  ${GREEN}javax.mail.jar bereits vorhanden${NC}"
fi

# activation.jar
if [ ! -f "$DEPS_DIR/activation.jar" ]; then
    echo "  Lade activation.jar (1.1.1) herunter..."
    curl -sL -o "$DEPS_DIR/activation.jar" \
        "https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar"
    echo -e "  ${GREEN}activation.jar heruntergeladen${NC}"
else
    echo -e "  ${GREEN}activation.jar bereits vorhanden${NC}"
fi

echo ""

# ============================================================
# Auf STARFACE kopieren
# ============================================================

echo -e "${YELLOW}Kopiere JavaMail-Bibliotheken auf STARFACE...${NC}"

scp -q "$DEPS_DIR/javax.mail.jar" "${SSH_USER}@${STARFACE_HOST}:$LIB_PATH/"
echo -e "  ${GREEN}javax.mail.jar kopiert${NC}"

scp -q "$DEPS_DIR/activation.jar" "${SSH_USER}@${STARFACE_HOST}:$LIB_PATH/"
echo -e "  ${GREEN}activation.jar kopiert${NC}"

echo ""

# ============================================================
# Erfolgsmeldung
# ============================================================

echo -e "${BLUE}========================================"
echo -e " Installation abgeschlossen!"
echo -e "========================================${NC}"
echo ""
echo -e "${GREEN}JavaMail erfolgreich auf STARFACE installiert:${NC}"
ssh "${SSH_USER}@${STARFACE_HOST}" "ls -lh $LIB_PATH/*mail*.jar $LIB_PATH/activation.jar 2>/dev/null" | while read line; do
    filename=$(echo "$line" | awk '{print $NF}')
    size=$(echo "$line" | awk '{print $5}')
    basename_jar=$(basename "$filename")
    echo -e "  ${GREEN}$basename_jar${NC} ($size)"
done

echo ""
echo -e "${YELLOW}WICHTIG: STARFACE-Dienst neustarten für Aktivierung:${NC}"
echo "  ssh ${SSH_USER}@${STARFACE_HOST} 'systemctl restart tomcat'"
echo ""
echo -e "${YELLOW}Nach dem Neustart kannst du das Mail2Fax-Modul verwenden!${NC}"
echo ""
