# eZICOM Login Helper 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` ## Dateien - `ezicom_login.py`: Login-Script - `plan.copilot`: kurze Untersuchungsnotizen - `Firefox Connection.html`: gespeicherte Firefox-Profiler-Ausgabe ## Voraussetzungen - Python 3.10 oder neuer - Keine externen Python-Pakete erforderlich - Netzwerkzugriff auf `https://zm.sufw.de:31443` ## Nutzung Am sichersten ist der interaktive Modus. Dabei werden keine Zugangsdaten in der Shell-History abgelegt: ```bash ./ezicom_login.py ``` Das Script fragt dann nach Benutzername und Passwort. Optional kann die HTML-Antwort nach dem Login gespeichert werden: ```bash ./ezicom_login.py --save-response after-login.html ``` 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: ```bash ./ezicom_login.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: ```dotenv EZICOM_USERNAME=dein-user EZICOM_PASSWORD=dein-passwort ``` Danach reicht: ```bash ./ezicom_login.py ``` Alternativ per CLI-Argument: ```bash ./ezicom_login.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.