## Stiller Download von STRATO-Logfiles

Lokale Anleitung für den täglichen Download der STRATO-Logfiles aus beliebig vielen STRATO-Paketen.

## Zweck

Der Batch liest die STRATO-Paketliste, öffnet jedes gefundene Paket und prüft dort, ob eine Statistik-Funktion vorhanden ist. Wenn keine Statistik vorhanden ist, geht der Batch ohne Fehler zum nächsten Paket weiter. Wenn Statistik und Logfiles vorhanden sind, wird der erwartete Dateiname ermittelt. Ist diese Datei im lokalen Paketordner schon vorhanden, wird sie nicht noch einmal heruntergeladen. Fehlt sie, wird das aktuelle Logfile direkt in den lokalen Paketordner geschrieben.

Die unten genannten Pakete sind nur Beispiele aus der aktuellen Einrichtung. Das Werkzeug ist nicht auf diese Pakete beschränkt und kann beliebig viele Pakete aus der STRATO-Liste verarbeiten.

Beispielpaket | Typisches Verhalten
--- | ---
STRATO Domain .de (Aktion LZ12) [5944556] | Wird geöffnet und geprüft. Wenn keine Statistik sichtbar ist, wird dieses Paket als ohne Statistik protokolliert und der nächste Eintrag bearbeitet.
STRATO Hosting Plus [1280453] | Wenn Statistik und Logfiles vorhanden sind, wird das Logfile heruntergeladen, sofern die Zieldatei nicht bereits existiert.
STRATO Hosting Pro (Treue-Angebot) [230295] | Wird auch gefunden, wenn es weiter unten in der STRATO-Paketliste steht.

## Download

Für die Weitergabe liegt ein ZIP mit den wichtigen Dateien bereit:

strato-log-batch-paket.zip herunterladen

Das ZIP enthält die Batch-EXEs, das Setup, Aufgabenplanungs-Skripte, diese Dokumentation und die Quellskripte zur Nachvollziehbarkeit. Browserprofil und `strato_login_credentials.dpapi.json` werden absichtlich nicht mitgeliefert, weil sie persönliche Sitzungs- oder Zugangsdaten enthalten können.

Für normale Nutzung gibt es `dist\StratoLogsSetup.exe`. Das Setup installiert nach `%LOCALAPPDATA%\Programs\AmrumSoftware\StratoLogs` und legt echte `.lnk`-Startmenüverknüpfungen mit Icon unter `AmrumSoftware\StratoLogs` an.

## Wichtige Dateien

Datei | Bedeutung
--- | ---
`dist\StratoLogBatchSilent.exe` | Stiller Lauf ohne Konsolenfenster. Geeignet für manuelle Hintergrundläufe.
`dist\StratoLogBatch.exe` | Sichtbarer Konsolenlauf zum Testen und zur Fehlersuche. Der Aufgaben-Wrapper startet diese EXE verborgen, damit er zuverlässig auf das Ende warten kann.
`strato_batch_task.ps1` | Wrapper für die Windows-Aufgabenplanung. Startet den Batch verborgen und zeigt nur bei Fehlern ein Fenster.
`install_strato_daily_task.ps1` | Legt die tägliche Windows-Aufgabe um 06:31 Uhr an oder aktualisiert sie.
`diagnose_starten.cmd` | Startet die STRATO-Erkennungsprüfung ohne PowerShell-Kenntnisse per Doppelklick.
`dist\StratoLogsSetup.exe` | Installiert das Werkzeug lokal und legt `.lnk`-Startmenüverknüpfungen für Lauf, Diagnose, Aufgabenplanung, Website, Auswertungsprogramm und Dokumentation an.
`release_manifest.json` | Enthält Build-Datum, Git-Commit, EXE-Größen und Hashdaten des Release-Builds.
`strato_batch_run.log` | Fortschrittslog des letzten Laufs.
`strato_batch_report.txt` und `strato_batch_report.json` | Ergebnisbericht des letzten Laufs.
`strato_morgenlauf_pruefung.txt` und `strato_morgenlauf_pruefung.json` | Automatische Prüfung, ob ein Aufgabenlauf im Morgenfenster lief, ein frisches Batch-Profil nutzte, den Browser maximierte und die Logfiles-/Downloadseite erreichte.
`strato_fehlerberichte\...` | Lokaler HTML-Fehlerbericht mit Browser-Tab-Screenshots und, falls `ffmpeg` verfuegbar ist, einem Fehlerfilm. Wird nur bei Fehlern behalten.
`strato_login_credentials.dpapi.json` | Lokal verschluesselte STRATO-Zugangsdaten fuer diesen Windows-Benutzer. Nicht weitergeben und nicht versionieren.
`browser-profile-playwright` | Lokales Chrome-Profil auf diesem Rechner. Nicht weitergeben, weil es persönliche Browserdaten enthalten kann.
`browser-profile-batch-runs\...` | Lokale kurzlebige Tagesprofile fuer geplante Laeufe. Sie verhindern, dass alte Chrome-Profil-Locks den Batch blockieren.
`browser-profile-batch` | Lokales dauerhaftes Ersatzprofil, falls ein frisches Tagesprofil nicht startet.

## Ablauf im Hintergrund

1. Der Batch startet einen steuerbaren Chrome for Testing mit eigenem Profil und lokalem Debug-Port `9223`, falls noch kein passender Browser laeuft. Fuer geplante Laeufe wird zuerst ein frisches Profil unter `browser-profile-batch-runs` genutzt.
2. Wenn STRATO die Loginseite zeigt, fuellt der Batch die Loginfelder mit lokal per Windows-DPAPI verschluesselten Zugangsdaten. Falls noch keine Daten vorhanden sind oder STRATO sie ablehnt, erscheint ein Eingabefenster.
3. Die Datei `strato_login_credentials.dpapi.json` gehoert nur auf diesen Rechner und zu diesem Windows-Benutzer.
4. Cookie-Dialoge wie `Zustimmen und schließen` werden automatisch geschlossen.
5. Die Paketliste wird vollständig gelesen. Dabei wird auch nach unten gescrollt, damit weiter unten stehende Pakete gefunden werden.
6. Jedes Paket wird geöffnet. Der Batch prüft dort, ob eine Statistik-Funktion vorhanden ist.
7. Wenn keine Statistik vorhanden ist, wird das Paket protokolliert und der Batch fährt mit dem nächsten Paket fort.
8. Wenn Statistik vorhanden ist, wird `Logfiles` geöffnet und zuerst geprüft, ob die erwartete lokale Logdatei schon existiert.
9. Vorhandene Dateien werden nicht erneut gespeichert; der Batch protokolliert den Status `already_exists`.
10. Fehlende Logfiles werden direkt über die eingeloggte STRATO-Sitzung gespeichert.
11. Bei Erfolg werden Report und Morgenlauf-Prüfung aktualisiert. Es erscheint keine Meldung.
12. Bei Fehlern bleiben bis zu 600 Browser-Tab-Screenshots erhalten; daraus wird mit 10 Bildern pro Sekunde ein Fehlerfilm erzeugt, wenn `ffmpeg` verfuegbar ist.
13. Bei Fehlern öffnet der Batch eine lokale HTML-Seite unter `strato_fehlerberichte`. Der Aufgaben-Wrapper zeigt zusätzlich ein Windows-Fenster mit den letzten Logzeilen und einem Button zum Kopieren des kompletten Fehlertexts.

Der Download wird nicht über den nativen Chrome-Dialog gespeichert. Der Batch liest das STRATO-Formular, übernimmt die Sitzungscookies aus Chrome und schreibt die `.gz`-Datei selbst in den Paketordner.

## Manueller Test

Für einen sichtbaren Testlauf mit Fortschrittsausgabe:

    cd /d E:\codex\strato-logs
    dist\StratoLogBatch.exe

Für einen stillen manuellen Lauf:

    cd /d E:\codex\strato-logs
    dist\StratoLogBatchSilent.exe

Der stille Lauf erzeugt keine Erfolgsmeldung. Das Ergebnis steht danach in `strato_batch_report.txt` und `strato_batch_run.log`.

## Windows-Aufgabenplanung

Die Aufgabe heißt `STRATO Log Batch taeglich` und startet jeden Morgen um `06:31`. Sie läuft nur, wenn der Benutzer angemeldet ist. Das ist notwendig, weil das Browserprofil, die per Windows-DPAPI geschuetzten Zugangsdaten und Fehlerfenster zur Benutzersitzung gehören.

Wenn die Windows-ScheduledTasks-Cmdlets verfügbar sind, wird die Aufgabe mit `StartWhenAvailable` angelegt. Ein verpasster Start wird dann nachgeholt, sobald der Benutzer wieder angemeldet ist. Falls Windows auf den `schtasks.exe`-Fallback ausweicht, sollte ein verpasster Start in der Aufgabenplanung manuell geprüft oder der Batch sichtbar gestartet werden.

Installation oder Aktualisierung der Aufgabe:

    powershell.exe -NoProfile -ExecutionPolicy Bypass -File "E:\codex\strato-logs\install_strato_daily_task.ps1"

Der eigentliche Aufgabenaufruf ist:

    powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File "E:\codex\strato-logs\strato_batch_task.ps1"

Erfolg: Keine Meldung. Fehler: Ein Windows-Fenster erscheint mit Fehlertext, letzten Logzeilen, den wichtigsten Diagnosepfaden und einem Button `Text kopieren`.

## Fehlersuche

### Kein Fehlerfenster, aber keine neuen Dateien

`strato_batch_run.log` und `strato_batch_report.txt` prüfen. Bei Erfolg legt der Batch neue Dateien in den Paketordnern ab. Wenn die erwartete Datei schon vorhanden ist, wird sie nicht erneut gespeichert und als `already_exists` protokolliert.

### Fehlerfenster: Login oder Paketliste nicht gefunden

Den sichtbaren Testlauf oder `diagnose_starten.cmd` starten. Wenn noch keine lokal verschluesselten Zugangsdaten vorhanden sind oder STRATO die vorhandenen Daten ablehnt, fragt der Batch Benutzername/Kundennummer und Passwort in einem Fenster ab.

Wenn STRATO `Zugangsdaten nicht erkannt` meldet, fragt der Batch die Zugangsdaten erneut ab. Erst wenn die Meldung mehrfach stehen bleibt, wird der Lauf als Fehler gemeldet.

### Cookie-Dialog blockiert

Der Batch versucht Cookie-Dialoge automatisch zu schließen. Wenn STRATO den Dialog ändert, einmal sichtbar testen und den Buttontext prüfen.

### STRATO ändert die Seitenstruktur

Für fremde Anwender gibt es einen Prüflauf ohne Download:

    diagnose_starten.cmd

Alternativ per Konsole:

    cd /d E:\codex\strato-logs
    dist\StratoLogBatch.exe --diagnose

Der Prüflauf öffnet die Paketliste, prüft jedes Paket und schreibt `strato_erkennung_pruefung.txt`. Wenn dort `ERROR` steht, enthält die Datei die sichtbaren STRATO-Klicktexte. Diese Textdatei reicht für eine gezielte Anpassung der Erkennung; der Anwender muss nicht selbst im Skript suchen.

## Weitergabe an einen anderen Anwender

1. Das ZIP entpacken, zum Beispiel nach `E:\codex\strato-logs` oder in einen anderen lokalen Arbeitsordner.
2. Ein eigenes steuerbares Chrome-Profil anlegen oder den Browser über den Batch starten.
3. Beim ersten Lauf Benutzername/Kundennummer und Passwort im Zugangsdatenfenster eingeben.
4. Mit `dist\StratoLogBatch.exe` sichtbar testen.
5. Wenn der sichtbare Test erfolgreich ist, `install_strato_daily_task.ps1` ausführen.

Zugangsdaten werden nicht in den Skripten, Logs, Reports oder im ZIP gespeichert. Sie liegen in `strato_login_credentials.dpapi.json` lokal per Windows-DPAPI verschluesselt fuer den jeweiligen Windows-Benutzer.