README
This commit is contained in:
1 parent
b05fdfb071
commit
f667fc87fb
1 file changed
+27
-92
@@ -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.
|
|
||||||
Reference in new issue
Block a user