eZICOM Login Helper
Dieses Verzeichnis enthaelt ein kleines Python-Script, das den Login in die eZICOM5-Weboberflaeche automatisiert.
Das Script macht keinen API-Login. Es ahmt den Browser-Login nach:
GET /zum Aufbau der Session-CookiePOST /usermit den Formularfeldernaction=login,uidundpw0
Dateien
ezicom_login.py: Login-Scriptplan.copilot: kurze UntersuchungsnotizenFirefox 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:
./ezicom_login.py --insecure
Das Script fragt dann nach Benutzername und Passwort.
Optional kann die HTML-Antwort nach dem Login gespeichert werden:
./ezicom_login.py --insecure --save-response after-login.html
Nach einem erfolgreichen Login zeigt eZICOM ggf. erst eine Zwischenmeldung mit
einem Weiter-Button. Diesen Schritt kann das Script ebenfalls ausfuehren:
./ezicom_login.py --insecure --follow-next --save-next-response next-page.html
Fuer die weitere Analyse der Zeitbuchung ist diese Folgeseite interessanter als die reine Login-Antwort.
Wenn du Zugangsdaten ueber Environment-Variablen setzen willst:
EZICOM_USERNAME='dein-user' EZICOM_PASSWORD='dein-passwort' ./ezicom_login.py --insecure
Oder trage sie in .env ein:
EZICOM_USERNAME=dein-user
EZICOM_PASSWORD=dein-passwort
Danach reicht:
./ezicom_login.py --insecure
Alternativ per CLI-Argument:
./ezicom_login.py -u 'dein-user' -p 'dein-passwort' --insecure
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.
Fehlerliste
Die Fehlerliste zeigt fehlerhafte Tage mit dem von eZICOM gelieferten Grund an,
z.B. Sollzeit definiert, aber keine Buchung oder Buchungen uebrig:
./ezicom_login.py --insecure --fehlerliste
Die HTML-Antwort kann optional gespeichert werden:
./ezicom_login.py --insecure --fehlerliste --save-fehlerliste-response fehlerliste.html
Wichtig: Fuer die Fehlerliste muss der Korrekturindex mit go=dfhl geladen und
der HTML-Block dfhl ausgewertet werden. Ohne diese Eingrenzung liefert eZICOM
auch die normale Buchungsliste mit zu vielen Eintraegen aus.
Korrekturbuchungen
Die Seite fuer eine neue Buchung/Korrekturbuchung wird ueber page=corrnew
aufgerufen. Die sid ist session-abhaengig und muss aus dem Login-Kontext
uebernommen werden:
https://zm.sufw.de:31443/user?page=corrnew&sid=<SID>&bt=1
TLS / Zertifikat
Bei lokalen Tests konnte Python die Zertifikatskette der eZICOM-Installation nicht verifizieren. Deshalb gibt es die Option:
--insecure
Diese Option deaktiviert die TLS-Zertifikatspruefung. Sauberer waere es, die
ausstellende CA lokal zu installieren und das Script ohne --insecure zu
verwenden.
Exit-Codes
0: Login sieht erfolgreich aus1: Login wurde vom Server abgelehnt, zum Beispiel HTTP 4032: technischer Fehler, zum Beispiel Netzwerk- oder TLS-Problem
Bekannte Grenzen
Das Script loggt ein, kann Zeitbuchungen absenden und die Fehlerliste anzeigen. Es ruft keine dedizierte eZICOM-API auf, sondern ahmt den Browser nach.