146 lines
6.8 KiB
PowerShell
146 lines
6.8 KiB
PowerShell
# ═══════════════════════════════════════════════════════════════════════════
|
|
# EmailSorter - Appwrite CORS Platform Setup (Automatisch)
|
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
# Dieses Script fügt automatisch die Production-Platform zu Appwrite hinzu,
|
|
# um CORS-Fehler zu beheben.
|
|
#
|
|
# Voraussetzungen:
|
|
# - Appwrite läuft unter https://appwrite.webklar.com
|
|
# - Du bist bereits eingeloggt in Appwrite (Browser-Session)
|
|
# - PowerShell ExecutionPolicy erlaubt Scripts (Set-ExecutionPolicy RemoteSigned)
|
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
|
|
param(
|
|
[string]$AppwriteUrl = "https://appwrite.webklar.com",
|
|
[string]$ProjectId = "",
|
|
[string]$PlatformHostname = "emailsorter.webklar.com",
|
|
[string]$PlatformOrigin = "https://emailsorter.webklar.com"
|
|
)
|
|
|
|
# Lade .env Datei falls vorhanden
|
|
$envFile = "..\server\.env"
|
|
if (Test-Path $envFile) {
|
|
Get-Content $envFile | ForEach-Object {
|
|
if ($_ -match '^\s*([^#][^=]*)=(.*)$') {
|
|
$key = $matches[1].Trim()
|
|
$value = $matches[2].Trim()
|
|
[Environment]::SetEnvironmentVariable($key, $value, "Process")
|
|
}
|
|
}
|
|
}
|
|
|
|
# Verwende Project ID aus .env falls nicht als Parameter übergeben
|
|
if ([string]::IsNullOrEmpty($ProjectId)) {
|
|
$ProjectId = $env:APPWRITE_PROJECT_ID
|
|
}
|
|
|
|
if ([string]::IsNullOrEmpty($ProjectId)) {
|
|
Write-Host "❌ Keine Project ID gefunden!" -ForegroundColor Red
|
|
Write-Host " Bitte gib die Project ID als Parameter an oder setze APPWRITE_PROJECT_ID in server/.env" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "`n🔧 Appwrite CORS Platform Setup" -ForegroundColor Cyan
|
|
Write-Host "═══════════════════════════════════════════════════════════════" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "Appwrite URL: $AppwriteUrl" -ForegroundColor Gray
|
|
Write-Host "Project ID: $ProjectId" -ForegroundColor Gray
|
|
Write-Host "Platform Host: $PlatformHostname" -ForegroundColor Gray
|
|
Write-Host "Platform Origin: $PlatformOrigin" -ForegroundColor Gray
|
|
Write-Host ""
|
|
|
|
# Prüfe ob Selenium WebDriver verfügbar ist
|
|
$seleniumAvailable = $false
|
|
try {
|
|
$seleniumModule = Get-Module -ListAvailable -Name "Selenium" -ErrorAction SilentlyContinue
|
|
if ($null -eq $seleniumModule) {
|
|
Write-Host "📦 Installiere Selenium WebDriver..." -ForegroundColor Yellow
|
|
Install-Module -Name "Selenium" -Scope CurrentUser -Force -ErrorAction SilentlyContinue | Out-Null
|
|
}
|
|
Import-Module Selenium -ErrorAction SilentlyContinue
|
|
$seleniumAvailable = $true
|
|
} catch {
|
|
Write-Host "⚠️ Selenium WebDriver nicht verfügbar. Verwende manuelle Methode." -ForegroundColor Yellow
|
|
$seleniumAvailable = $false
|
|
}
|
|
|
|
if (-not $seleniumAvailable) {
|
|
Write-Host ""
|
|
Write-Host "💡 MANUELLE METHODE:" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
Write-Host "Da Browser-Automatisierung nicht verfügbar ist, bitte folge diesen Schritten:" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "1. Öffne deinen Browser und gehe zu:" -ForegroundColor Cyan
|
|
Write-Host " $AppwriteUrl" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "2. Logge dich ein (falls noch nicht geschehen)" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "3. Öffne dein Projekt (Project ID: $ProjectId)" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "4. Gehe zu Settings → Platforms (oder 'Web' in manchen Versionen)" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "5. Klicke auf 'Add Platform' oder 'Create Platform'" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "6. Wähle 'Web' als Platform-Typ" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "7. Fülle die Felder aus:" -ForegroundColor Cyan
|
|
Write-Host " - Name: Production" -ForegroundColor White
|
|
Write-Host " - Hostname: $PlatformHostname" -ForegroundColor White
|
|
Write-Host " - Origin: $PlatformOrigin (falls gefragt)" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "8. Speichere und warte 1-2 Minuten" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "✅ Danach sollten die CORS-Fehler verschwinden!" -ForegroundColor Green
|
|
Write-Host ""
|
|
exit 0
|
|
}
|
|
|
|
# Browser-Automatisierung mit Selenium
|
|
Write-Host "🌐 Starte Browser-Automatisierung..." -ForegroundColor Yellow
|
|
|
|
try {
|
|
# Starte Chrome Browser
|
|
$driver = Start-SeChrome -Headless:$false
|
|
|
|
Write-Host "✓ Browser gestartet" -ForegroundColor Green
|
|
|
|
# Navigiere zu Appwrite
|
|
Write-Host "📡 Navigiere zu Appwrite..." -ForegroundColor Yellow
|
|
$driver.Navigate().GoToUrl("$AppwriteUrl/console/project-$ProjectId/settings/platforms")
|
|
|
|
Start-Sleep -Seconds 3
|
|
|
|
Write-Host ""
|
|
Write-Host "⚠️ WICHTIG: Bitte führe die folgenden Schritte manuell im Browser aus:" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
Write-Host "1. Falls du nicht eingeloggt bist, logge dich jetzt ein" -ForegroundColor Cyan
|
|
Write-Host "2. Die Platform-Seite sollte bereits geöffnet sein" -ForegroundColor Cyan
|
|
Write-Host "3. Klicke auf 'Add Platform' oder 'Create Platform'" -ForegroundColor Cyan
|
|
Write-Host "4. Wähle 'Web' als Platform-Typ" -ForegroundColor Cyan
|
|
Write-Host "5. Fülle aus:" -ForegroundColor Cyan
|
|
Write-Host " - Name: Production" -ForegroundColor White
|
|
Write-Host " - Hostname: $PlatformHostname" -ForegroundColor White
|
|
Write-Host " - Origin: $PlatformOrigin" -ForegroundColor White
|
|
Write-Host "6. Klicke auf 'Create' oder 'Save'" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "Drücke Enter, wenn du fertig bist..." -ForegroundColor Yellow
|
|
Read-Host
|
|
|
|
Write-Host ""
|
|
Write-Host "✅ Platform sollte jetzt hinzugefügt sein!" -ForegroundColor Green
|
|
Write-Host ""
|
|
Write-Host "📝 Warte 1-2 Minuten, damit die CORS-Änderungen wirksam werden." -ForegroundColor Yellow
|
|
Write-Host " Danach sollten die CORS-Fehler verschwinden." -ForegroundColor Yellow
|
|
Write-Host ""
|
|
|
|
# Browser bleibt offen für manuelle Schritte
|
|
Write-Host "Browser bleibt geöffnet. Schließe ihn manuell, wenn du fertig bist." -ForegroundColor Gray
|
|
|
|
} catch {
|
|
Write-Host ""
|
|
Write-Host "❌ Fehler bei Browser-Automatisierung: $($_.Exception.Message)" -ForegroundColor Red
|
|
Write-Host ""
|
|
Write-Host "💡 Bitte verwende die manuelle Methode (siehe oben)" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|