#!/bin/bash

# SingleChat Systemd Service Installation für ypchat.net
# Erstellt einen systemd Service für SingleChat

set -e

SERVICE_NAME="ypchat"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
APP_DIR="/opt/ypchat"
USER="www-data"
GROUP="www-data"

echo "=========================================="
echo "SingleChat Systemd Service Installation"
echo "=========================================="

# Prüfe ob als root ausgeführt
if [ "$EUID" -ne 0 ]; then 
    echo "FEHLER: Dieses Skript muss als root ausgeführt werden!"
    echo "Bitte führe aus: sudo ./install-service-ypchat.sh"
    exit 1
fi

# Prüfe ob App-Verzeichnis existiert
if [ ! -d "$APP_DIR" ]; then
    echo "FEHLER: App-Verzeichnis $APP_DIR existiert nicht!"
    echo "Bitte kopiere die Anwendung nach $APP_DIR oder passe APP_DIR an."
    exit 1
fi

# Prüfe ob .env Datei existiert
if [ ! -f "$APP_DIR/.env" ]; then
    echo "WARNUNG: .env Datei nicht gefunden in $APP_DIR"
    echo "Erstelle .env Datei..."
    cat > "$APP_DIR/.env" << EOF
NODE_ENV=production
PORT=4000
SESSION_SECRET=$(openssl rand -hex 32)
EOF
    chown $USER:$GROUP "$APP_DIR/.env"
    echo "✓ .env Datei erstellt"
fi

# Erstelle Service-Datei
echo "Erstelle Service-Datei..."
cat > "$SERVICE_FILE" << EOF
[Unit]
Description=SingleChat Node.js Application
After=network.target

[Service]
Type=simple
User=$USER
Group=$GROUP
WorkingDirectory=$APP_DIR
Environment="NODE_ENV=production"
Environment="PORT=4000"
EnvironmentFile=$APP_DIR/.env
ExecStart=/usr/bin/node server/index.js
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ypchat

[Install]
WantedBy=multi-user.target
EOF

echo "✓ Service-Datei erstellt: $SERVICE_FILE"

# Lade systemd neu
echo "Lade systemd neu..."
systemctl daemon-reload

echo "✓ systemd neu geladen"

# Stoppe alten Service falls vorhanden
if systemctl is-active --quiet ypchat 2>/dev/null; then
    echo "Stoppe alten Service..."
    systemctl stop ypchat
    echo "✓ Alter Service gestoppt"
fi

# Aktiviere Service
echo "Aktiviere Service..."
systemctl enable $SERVICE_NAME

echo "✓ Service aktiviert"

echo ""
echo "=========================================="
echo "Service-Installation abgeschlossen!"
echo "=========================================="
echo ""
echo "Verfügbare Befehle:"
echo "  Start:   sudo systemctl start $SERVICE_NAME"
echo "  Stop:    sudo systemctl stop $SERVICE_NAME"
echo "  Status:  sudo systemctl status $SERVICE_NAME"
echo "  Logs:    sudo journalctl -u $SERVICE_NAME -f"
echo ""
echo "WICHTIG: Starte den Service mit:"
echo "  sudo systemctl start $SERVICE_NAME"
echo ""

