276 lines
9.2 KiB
Bash
Executable File
276 lines
9.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# STARFACE API Libraries Fetcher
|
|
# Holt die benötigten JARs und Klassen von einer STARFACE Installation via SCP
|
|
#
|
|
# Verwendung:
|
|
# ./fetch-starface-libs.sh <starface-host> [user] [target-dir]
|
|
#
|
|
# Beispiele:
|
|
# ./fetch-starface-libs.sh 192.168.1.100
|
|
# ./fetch-starface-libs.sh starface.firma.local root
|
|
# ./fetch-starface-libs.sh 10.0.0.5 root v8-9-10/libs/starface
|
|
#
|
|
|
|
set -e
|
|
|
|
# Farben für Output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Argumente
|
|
STARFACE_HOST="${1:-}"
|
|
SSH_USER="${2:-root}"
|
|
TARGET_DIR="${3:-v8-9-10/libs/starface}"
|
|
|
|
# Script-Verzeichnis
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo -e "${BLUE}========================================"
|
|
echo " STARFACE API Libraries Fetcher"
|
|
echo -e "========================================${NC}"
|
|
echo ""
|
|
|
|
# Hilfe anzeigen
|
|
if [ -z "$STARFACE_HOST" ] || [ "$STARFACE_HOST" == "-h" ] || [ "$STARFACE_HOST" == "--help" ]; then
|
|
echo "Verwendung: $0 <starface-host> [user] [target-dir]"
|
|
echo ""
|
|
echo "Argumente:"
|
|
echo " starface-host IP-Adresse oder Hostname der STARFACE (erforderlich)"
|
|
echo " user SSH-Benutzer (Standard: root)"
|
|
echo " target-dir Zielverzeichnis für die JARs (Standard: v8-9-10/libs/starface)"
|
|
echo ""
|
|
echo "Beispiele:"
|
|
echo " $0 192.168.1.100"
|
|
echo " $0 starface.firma.local root"
|
|
echo " $0 10.0.0.5 root v8-9-10/libs/starface"
|
|
echo ""
|
|
echo "Voraussetzungen:"
|
|
echo " - SSH-Zugang zur STARFACE (root oder sudo-Benutzer)"
|
|
echo " - SSH-Key oder Passwort-Authentifizierung"
|
|
echo ""
|
|
echo "Tipp: SSH-Key einrichten für passwortloses Login:"
|
|
echo " ssh-copy-id root@<starface-host>"
|
|
exit 0
|
|
fi
|
|
|
|
echo -e "STARFACE Host: ${GREEN}$STARFACE_HOST${NC}"
|
|
echo -e "SSH User: ${GREEN}$SSH_USER${NC}"
|
|
echo -e "Zielordner: ${GREEN}$TARGET_DIR${NC}"
|
|
echo ""
|
|
|
|
# Zielverzeichnis erstellen
|
|
mkdir -p "$TARGET_DIR"
|
|
|
|
# STARFACE Version und Pfade ermitteln
|
|
echo -e "${YELLOW}Ermittle STARFACE Version...${NC}"
|
|
|
|
STARFACE_VERSION=$(ssh -o ConnectTimeout=10 "${SSH_USER}@${STARFACE_HOST}" \
|
|
"cat /etc/starface-release 2>/dev/null || head -1 /opt/starface/version.txt 2>/dev/null || echo 'unknown'" 2>/dev/null || echo "connection-failed")
|
|
|
|
if [ "$STARFACE_VERSION" == "connection-failed" ]; then
|
|
echo -e "${RED}Fehler: Konnte keine Verbindung zu $STARFACE_HOST herstellen${NC}"
|
|
echo ""
|
|
echo "Mögliche Ursachen:"
|
|
echo " - Falscher Hostname/IP"
|
|
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 "STARFACE Version: ${GREEN}$STARFACE_VERSION${NC}"
|
|
echo ""
|
|
|
|
# Pfade
|
|
LIB_PATH="/opt/tomcat/webapps/localhost/starface/WEB-INF/lib"
|
|
CLASSES_PATH="/opt/tomcat/webapps/localhost/starface/WEB-INF/classes"
|
|
|
|
# Prüfen welcher Pfad existiert
|
|
echo -e "${YELLOW}Prüfe Verzeichnisstruktur...${NC}"
|
|
|
|
ACTUAL_LIB_PATH=$(ssh "${SSH_USER}@${STARFACE_HOST}" \
|
|
"if [ -d '$LIB_PATH' ]; then echo '$LIB_PATH'; fi" 2>/dev/null)
|
|
|
|
ACTUAL_CLASSES_PATH=$(ssh "${SSH_USER}@${STARFACE_HOST}" \
|
|
"if [ -d '$CLASSES_PATH' ]; then echo '$CLASSES_PATH'; fi" 2>/dev/null)
|
|
|
|
if [ -z "$ACTUAL_LIB_PATH" ]; then
|
|
echo -e "${RED}Fehler: STARFACE Bibliotheksverzeichnis nicht gefunden${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "Bibliothekspfad: ${GREEN}$ACTUAL_LIB_PATH${NC}"
|
|
echo -e "Klassenpfad: ${GREEN}$ACTUAL_CLASSES_PATH${NC}"
|
|
echo ""
|
|
|
|
# Alte Stub-Dateien löschen
|
|
rm -f "$TARGET_DIR/starface-stubs.jar" 2>/dev/null
|
|
rm -f "$TARGET_DIR/starface-classes.jar" 2>/dev/null
|
|
|
|
# ============================================================
|
|
# STARFACE 9.x: Module-API ist in /classes, nicht in JARs
|
|
# ============================================================
|
|
|
|
echo -e "${YELLOW}Prüfe auf STARFACE 9.x Struktur (Module-API in classes)...${NC}"
|
|
|
|
HAS_MODULE_CLASSES=$(ssh "${SSH_USER}@${STARFACE_HOST}" \
|
|
"if [ -d '$CLASSES_PATH/de/vertico/starface/module' ]; then echo 'yes'; fi" 2>/dev/null)
|
|
|
|
if [ "$HAS_MODULE_CLASSES" == "yes" ]; then
|
|
echo -e "${GREEN}STARFACE 9.x erkannt - Module-API in classes gefunden${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Erstelle JAR aus STARFACE classes...${NC}"
|
|
|
|
# Temporäres Verzeichnis auf STARFACE erstellen und JAR bauen
|
|
ssh "${SSH_USER}@${STARFACE_HOST}" "cd $CLASSES_PATH && jar cf /tmp/starface-classes.jar de/vertico/starface/module de/vertico/starface/persistence 2>/dev/null || jar cf /tmp/starface-classes.jar de/vertico/starface/module"
|
|
|
|
# JAR herunterladen
|
|
scp -q "${SSH_USER}@${STARFACE_HOST}:/tmp/starface-classes.jar" "$TARGET_DIR/"
|
|
ssh "${SSH_USER}@${STARFACE_HOST}" "rm -f /tmp/starface-classes.jar"
|
|
|
|
echo -e " ${GREEN}starface-classes.jar erstellt${NC}"
|
|
echo ""
|
|
fi
|
|
|
|
# ============================================================
|
|
# JAR-Dateien herunterladen
|
|
# ============================================================
|
|
|
|
# JARs für STARFACE 9.x (neue Namensgebung)
|
|
STARFACE9_JARS=(
|
|
"starface-db-*.jar"
|
|
"starface-commons-*.jar"
|
|
"starface-domain-objects-*.jar"
|
|
"starface-rpc-*.jar"
|
|
"starface-ng-*.jar"
|
|
)
|
|
|
|
# Allgemeine JARs (alle Versionen)
|
|
COMMON_JARS=(
|
|
"log4j-api-*.jar"
|
|
"log4j-core-*.jar"
|
|
)
|
|
|
|
# Legacy JARs (STARFACE 8.x und älter)
|
|
LEGACY_JARS=(
|
|
"starface-module-*.jar"
|
|
"starface-persistence-*.jar"
|
|
)
|
|
|
|
echo -e "${YELLOW}Lade STARFACE JARs herunter...${NC}"
|
|
|
|
download_jars() {
|
|
local jar_array=("$@")
|
|
for pattern in "${jar_array[@]}"; do
|
|
files=$(ssh "${SSH_USER}@${STARFACE_HOST}" "ls $ACTUAL_LIB_PATH/$pattern 2>/dev/null" || true)
|
|
|
|
if [ -n "$files" ]; then
|
|
for file in $files; do
|
|
filename=$(basename "$file")
|
|
echo -n " $filename: "
|
|
scp -q "${SSH_USER}@${STARFACE_HOST}:$file" "$TARGET_DIR/" 2>/dev/null
|
|
echo -e "${GREEN}OK${NC}"
|
|
done
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Download alle JAR-Typen
|
|
download_jars "${STARFACE9_JARS[@]}"
|
|
download_jars "${COMMON_JARS[@]}"
|
|
download_jars "${LEGACY_JARS[@]}"
|
|
|
|
echo ""
|
|
|
|
# ============================================================
|
|
# Zusammenfassung
|
|
# ============================================================
|
|
|
|
JAR_COUNT=$(ls -1 "$TARGET_DIR"/*.jar 2>/dev/null | wc -l)
|
|
|
|
echo -e "${BLUE}========================================"
|
|
echo -e " Download abgeschlossen!"
|
|
echo -e "========================================${NC}"
|
|
echo ""
|
|
echo -e "Heruntergeladene Dateien: ${GREEN}$JAR_COUNT${NC}"
|
|
echo -e "Speicherort: ${GREEN}$TARGET_DIR/${NC}"
|
|
echo ""
|
|
|
|
if [ "$JAR_COUNT" -gt 0 ]; then
|
|
echo "Inhalt:"
|
|
ls -lh "$TARGET_DIR"/*.jar 2>/dev/null | while read line; do
|
|
filename=$(echo "$line" | awk '{print $NF}')
|
|
size=$(echo "$line" | awk '{print $5}')
|
|
basename=$(basename "$filename")
|
|
echo -e " ${GREEN}$basename${NC} ($size)"
|
|
done
|
|
echo ""
|
|
|
|
# Prüfen ob Module-API vorhanden ist
|
|
if [ -f "$TARGET_DIR/starface-classes.jar" ] || ls "$TARGET_DIR"/starface-module-*.jar 2>/dev/null | grep -q .; then
|
|
echo -e "${GREEN}Module-API gefunden - du kannst jetzt bauen:${NC}"
|
|
echo " cd v8-9-10 && ./build-block.sh"
|
|
else
|
|
echo -e "${YELLOW}Warnung: Module-API nicht gefunden${NC}"
|
|
echo "Das Build-Script wird Stub-Klassen erstellen."
|
|
fi
|
|
else
|
|
echo -e "${RED}Keine JARs heruntergeladen. Prüfe die Verbindung und Berechtigungen.${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# ============================================================
|
|
# JavaMail-Bibliothek prüfen und ggf. installieren
|
|
# ============================================================
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}Prüfe JavaMail-Bibliothek auf STARFACE...${NC}"
|
|
|
|
HAS_JAVAMAIL=$(ssh "${SSH_USER}@${STARFACE_HOST}" \
|
|
"ls $ACTUAL_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 -1 $ACTUAL_LIB_PATH/*mail*.jar 2>/dev/null" | while read jar; do
|
|
echo -e " ${GREEN}$(basename $jar)${NC}"
|
|
done
|
|
else
|
|
echo -e "${YELLOW}JavaMail nicht gefunden - wird installiert...${NC}"
|
|
|
|
# JavaMail herunterladen falls nicht lokal vorhanden
|
|
DEPS_DIR="$SCRIPT_DIR/v8-9-10/libs/deps"
|
|
mkdir -p "$DEPS_DIR"
|
|
|
|
if [ ! -f "$DEPS_DIR/javax.mail.jar" ]; then
|
|
echo " Lade javax.mail.jar 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"
|
|
fi
|
|
|
|
if [ ! -f "$DEPS_DIR/activation.jar" ]; then
|
|
echo " Lade activation.jar herunter..."
|
|
curl -sL -o "$DEPS_DIR/activation.jar" \
|
|
"https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar"
|
|
fi
|
|
|
|
# Auf STARFACE kopieren
|
|
echo " Kopiere nach STARFACE..."
|
|
scp -q "$DEPS_DIR/javax.mail.jar" "${SSH_USER}@${STARFACE_HOST}:$ACTUAL_LIB_PATH/"
|
|
scp -q "$DEPS_DIR/activation.jar" "${SSH_USER}@${STARFACE_HOST}:$ACTUAL_LIB_PATH/"
|
|
|
|
echo -e "${GREEN}JavaMail erfolgreich auf STARFACE installiert!${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}WICHTIG: STARFACE-Dienst neustarten für Aktivierung:${NC}"
|
|
echo " ssh ${SSH_USER}@${STARFACE_HOST} 'systemctl restart tomcat'"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Fertig! Du kannst jetzt den Mail2FaxBlock kompilieren:${NC}"
|
|
echo " cd v8-9-10 && ./build-block.sh"
|