#!/bin/bash # start_email_api.sh # Dieses Script startet die S3 Email Downloader REST API in einer virtuellen Python-Umgebung # Verzeichnis, in dem sich das Script befindet SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # Name der virtuellen Umgebung VENV_NAME="venv" # Python-Executable (falls spezifische Version benötigt wird) PYTHON_EXEC="python3" # API Port PORT=${EMAIL_API_PORT:-5000} # Umgebungsvariablen Datei ENV_FILE=".env" # Prüfen, ob virtuelle Umgebung existiert if [ ! -d "$VENV_NAME" ]; then echo "Virtuelle Umgebung wird erstellt..." $PYTHON_EXEC -m venv "$VENV_NAME" if [ $? -ne 0 ]; then echo "Fehler beim Erstellen der virtuellen Umgebung!" exit 1 fi fi # Virtuelle Umgebung aktivieren source "$VENV_NAME/bin/activate" # Abhängigkeiten installieren, falls erforderlich echo "Abhängigkeiten werden installiert..." pip install --upgrade pip pip install boto3 flask python-dotenv gunicorn # Prüfen, ob .env-Datei existiert if [ ! -f "$ENV_FILE" ]; then echo "WARNUNG: $ENV_FILE nicht gefunden!" echo "Bitte erstellen Sie eine .env-Datei mit den erforderlichen Konfigurationen." echo "Beispiel:" echo "API_TOKEN=ihr_geheimer_token" echo "MAIL_DIR=./mail" echo "AWS_REGION=us-east-2" echo "AWS_ACCESS_KEY_ID=your_access_key" echo "AWS_SECRET_ACCESS_KEY=your_secret_key" echo "DOMAIN_1=example.com" echo "DOMAIN_1_BUCKET=example-bucket" echo "DOMAIN_1_USERNAMES=user1,user2,user3" exit 1 fi # Überprüfen, ob API_TOKEN in der .env-Datei gesetzt ist if ! grep -q "API_TOKEN" "$ENV_FILE"; then echo "WARNUNG: API_TOKEN nicht in $ENV_FILE gefunden!" echo "Die API wird ohne Token-Schutz gestartet. Dies ist unsicher für Produktionsumgebungen." read -p "Möchten Sie fortfahren? (j/n): " choice if [[ ! "$choice" =~ ^[jJyY]$ ]]; then echo "Abbruch." exit 1 fi fi # Prüfen, ob das Python-Script existiert API_SCRIPT="s3_email_downloader_api.py" if [ ! -f "$API_SCRIPT" ]; then echo "Fehler: $API_SCRIPT nicht gefunden!" exit 1 fi # API im Produktionsmodus mit Gunicorn starten echo "Starte S3 Email Downloader API auf Port $PORT..." exec gunicorn --bind "0.0.0.0:$PORT" --workers 2 "s3_email_downloader_api:app"