#!/bin/bash
# awss3.sh - Erstellt einen S3-Bucket für Amazon SES E-Mail-Speicherung

# Überprüfen, ob die Domain-Variable gesetzt ist
if [ -z "$DOMAIN_NAME" ]; then
  echo "Fehler: DOMAIN_NAME ist nicht gesetzt."
  echo "Bitte setzen Sie die Variable mit: export DOMAIN_NAME='IhreDomain.de'"
  exit 1
fi

# Konfiguration
AWS_REGION=${AWS_REGION:-"us-east-2"}
EMAIL_PREFIX=${EMAIL_PREFIX:-"emails/"}
S3_BUCKET_NAME=$(echo "$DOMAIN_NAME" | tr '.' '-' | awk '{print $0 "-emails"}')

echo "=== S3 Bucket Configuration für $DOMAIN_NAME ==="
echo "Region: $AWS_REGION"
echo "Bucket-Name: $S3_BUCKET_NAME"
echo "E-Mail-Präfix: $EMAIL_PREFIX"

# ------------------------
# S3 Bucket erstellen
# ------------------------
echo "S3 Bucket erstellen..."
aws s3api create-bucket \
  --bucket ${S3_BUCKET_NAME} \
  --region ${AWS_REGION} \
  --create-bucket-configuration LocationConstraint=${AWS_REGION}

# Öffentlichen Zugriff blockieren
echo "Öffentlichen Zugriff blockieren..."
aws s3api put-public-access-block \
  --bucket ${S3_BUCKET_NAME} \
  --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"

# Lebenszyklus-Konfiguration hinzufügen
echo "Lebenszyklus-Konfiguration hinzufügen (E-Mails werden nach 90 Tagen gelöscht)..."
aws s3api put-bucket-lifecycle-configuration \
  --bucket ${S3_BUCKET_NAME} \
  --lifecycle-configuration '{
    "Rules": [
      {
        "ID": "DeleteOldEmails",
        "Status": "Enabled",
        "Expiration": {
          "Days": 90
        },
        "Filter": {
          "Prefix": ""
        }
      }
    ]
  }'
  
echo "S3 Bucket Policy hinzufügen für SES-Zugriff..."
aws s3api put-bucket-policy \
  --bucket ${S3_BUCKET_NAME} \
  --policy '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "ses.amazonaws.com"
        },
        "Action": [
          "s3:PutObject",
          "s3:GetBucketLocation",
          "s3:ListBucket"
        ],
        "Resource": [
          "arn:aws:s3:::'${S3_BUCKET_NAME}'",
          "arn:aws:s3:::'${S3_BUCKET_NAME}'/*"
        ]
      }
    ]
  }'

echo "S3 Bucket $S3_BUCKET_NAME wurde erfolgreich erstellt und konfiguriert."
echo "Bucket-ARN: arn:aws:s3:::$S3_BUCKET_NAME"

# Exportiere Variablen für andere Scripte
echo
echo "Für die Verwendung in den anderen Scripten setzen Sie:"
echo "export S3_BUCKET_NAME=$S3_BUCKET_NAME"