diff --git a/README.md b/README.md index 91ca912..49e910a 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,15 @@ -# eZICOM Login Helper +# eZICOM Zeitbuchungs-Korrektur -Dieses Verzeichnis enthält ein kleines Python-Script, das den Login in die -eZICOM5-Weboberfläche automatisiert. - -Das Script macht keinen API-Login. Es ahmt den Browser-Login nach: - -1. `GET /` zum Aufbau der Session-Cookie -2. `POST /user` mit den Formularfeldern `action=login`, `uid` und `pw0` +Automatisiert das Nachtragen fehlender Zeitbuchungen in der eZICOM5-Weboberfläche. +Das Script meldet sich per Browser-Login an, ruft die Fehlerliste ab und sendet +für ausgewählte Tage Korrekturbuchungen (10:00 Kommen, 14:00 Gehen). ## Dateien -- `ezicom_login.py`: Login-Script -- `plan.copilot`: kurze Untersuchungsnotizen -- `Firefox Connection.html`: gespeicherte Firefox-Profiler-Ausgabe +- `ezicom_book.py`: **Korrektur-Buchungs-Tool** – das eigentliche Werkzeug +- `ezicom_login.py`: Login-Test-Script (durch `ezicom_book.py` überflüssig geworden) +- `.copilot/plan.copilot.md`: Untersuchungsnotizen +- `Research Data/`: Debug-Ausgaben (nur mit `--debug`) ## Voraussetzungen @@ -22,108 +19,46 @@ Das Script macht keinen API-Login. Es ahmt den Browser-Login nach: ## Nutzung -Am sichersten ist der interaktive Modus. Dabei werden keine Zugangsdaten in der -Shell-History abgelegt: - ```bash -./ezicom_login.py +./ezicom_book.py ``` -Das Script fragt dann nach Benutzername und Passwort. +Das Script fragt nach Benutzername und Passwort, meldet sich an und zeigt +die Fehlerliste. Anschließend können ein oder mehrere Einträge zur Korrektur +ausgewählt werden (z. B. `1`, `1,3`, `1-4` oder `a` für alle). Für jeden +gewählten Tag werden zwei Buchungen gesendet: Kommen um 10:00 und Gehen um 14:00. -Optional kann die HTML-Antwort nach dem Login gespeichert werden: +Mit `--debug` werden zusätzlich alle Server-Antworten im Ordner `Research Data/` +gespeichert: ```bash -./ezicom_login.py --save-response after-login.html +./ezicom_book.py --debug ``` -Nach einem erfolgreichen Login zeigt eZICOM ggf. erst eine Zwischenmeldung mit -einem `Weiter`-Button. Diesen Schritt fuehrt das Script automatisch aus und -zeigt danach die Fehlerliste im Terminal an: +## Zugangsdaten + +Credentials können interaktiv eingegeben oder auf drei Arten vorab gesetzt werden: + +**Environment-Variablen:** ```bash -./ezicom_login.py +EZICOM_USERNAME='dein-user' EZICOM_PASSWORD='dein-passwort' ./ezicom_book.py ``` -Optional kann die HTML-Antwort nach diesem Schritt gespeichert werden: - -```bash -./ezicom_login.py --save-next-response next-page.html -``` - -Fuer die Fehlerliste lädt das Script den Korrekturindex mit `go=dfhl` und wertet -nur den HTML-Block `dfhl` aus. - -Einträge, die juenger als 15 Tage sind, werden nummeriert angezeigt. Nach der -Liste kann eine Nummer eingegeben werden, um fuer diesen Tag automatisch zwei -Korrekturbuchungen zu senden: 10:00 als Kommen-Buchung und 14:00 als -Gehen-Buchung. Einträge, die älter als 14 Tage sind, stehen unter einem -Hinweis und koennen nicht ausgewählt werden. - -Wenn du Zugangsdaten ueber Environment-Variablen setzen willst: - -```bash -EZICOM_USERNAME='dein-user' EZICOM_PASSWORD='dein-passwort' ./ezicom_login.py -``` - -Oder trage sie in `.env` ein: +**`.env`-Datei:** ```dotenv EZICOM_USERNAME=dein-user EZICOM_PASSWORD=dein-passwort ``` -Danach reicht: - ```bash -./ezicom_login.py +./ezicom_book.py ``` -Alternativ per CLI-Argument: +**CLI-Argumente** (in der Shell-History sichtbar – für echte Nutzung besser +interaktiv oder `.env`): ```bash -./ezicom_login.py -u 'dein-user' -p 'dein-passwort' +./ezicom_book.py -u 'dein-user' -p 'dein-passwort' ``` - -Hinweis: CLI-Argumente koennen in der Shell-History und kurzzeitig in der -Prozessliste sichtbar sein. Fuer echte Nutzung ist der interaktive Modus oder -ein sauber geschuetzter Secret-Store besser. - -## Zeitbuchungen - -Eine Zeitbuchung wird standardmässig nur vorbereitet und im Terminal angezeigt: - -```bash -./ezicom_login.py --book kommen -``` - -Moegliche Werte sind `kommen`, `pause` und `gehen`. Erst mit -`--execute-booking` wird die Buchung wirklich an eZICOM gesendet: - -```bash -./ezicom_login.py --book kommen --execute-booking -``` - -## TLS / Zertifikat - -Bei lokalen Tests konnte Python die Zertifikatskette der eZICOM-Installation -nicht verifizieren. Deshalb deaktiviert das Script die TLS-Zertifikatspruefung -standardmässig. - -Wenn die ausstellende CA lokal installiert ist, kann die Pruefung explizit -aktiviert werden: - -```bash -./ezicom_login.py --verify-tls -``` - -## Exit-Codes - -- `0`: Login sieht erfolgreich aus -- `1`: Login wurde vom Server abgelehnt, zum Beispiel HTTP 403 -- `2`: technischer Fehler, zum Beispiel Netzwerk-, TLS- oder Parse-Problem - -## Bekannte Grenzen - -Das Script loggt ein, zeigt die Fehlerliste an und kann Zeitbuchungen absenden. -Es ruft keine dedizierte eZICOM-API auf, sondern ahmt den Browser nach.