This commit is contained in:
trnq1ll0 committed 2026-06-23 07:33:09 +02:00
1 parent b05fdfb071
commit f667fc87fb
1 file changed
+27 -92
+27 -92
View File
@@ -1,18 +1,15 @@
# eZICOM Login Helper # eZICOM Zeitbuchungs-Korrektur
Dieses Verzeichnis enthält ein kleines Python-Script, das den Login in die Automatisiert das Nachtragen fehlender Zeitbuchungen in der eZICOM5-Weboberfläche.
eZICOM5-Weboberfläche automatisiert. 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).
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 ## Dateien
- `ezicom_login.py`: Login-Script - `ezicom_book.py`: **Korrektur-Buchungs-Tool** – das eigentliche Werkzeug
- `plan.copilot`: kurze Untersuchungsnotizen - `ezicom_login.py`: Login-Test-Script (durch `ezicom_book.py` überflüssig geworden)
- `Firefox Connection.html`: gespeicherte Firefox-Profiler-Ausgabe - `.copilot/plan.copilot.md`: Untersuchungsnotizen
- `Research Data/`: Debug-Ausgaben (nur mit `--debug`)
## Voraussetzungen ## Voraussetzungen
@@ -22,108 +19,46 @@ Das Script macht keinen API-Login. Es ahmt den Browser-Login nach:
## Nutzung ## Nutzung
Am sichersten ist der interaktive Modus. Dabei werden keine Zugangsdaten in der
Shell-History abgelegt:
```bash ```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 ```bash
./ezicom_login.py --save-response after-login.html ./ezicom_book.py --debug
``` ```
Nach einem erfolgreichen Login zeigt eZICOM ggf. erst eine Zwischenmeldung mit ## Zugangsdaten
einem `Weiter`-Button. Diesen Schritt fuehrt das Script automatisch aus und
zeigt danach die Fehlerliste im Terminal an: Credentials können interaktiv eingegeben oder auf drei Arten vorab gesetzt werden:
**Environment-Variablen:**
```bash ```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: **`.env`-Datei:**
```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 ```dotenv
EZICOM_USERNAME=dein-user EZICOM_USERNAME=dein-user
EZICOM_PASSWORD=dein-passwort EZICOM_PASSWORD=dein-passwort
``` ```
Danach reicht:
```bash ```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 ```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.