Files
SUFW-Timetracking/README.md
T

130 lines
3.3 KiB
Markdown

# 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.