Assistent mit Menuefuehrung, dazu zwei Haertungen
kerio_tui.py fuehrt durch Umbenennung und Uebernahme, ohne dass man Parameter kennen muss: Benutzer und Domains kommen zur Auswahl, verwaiste Mailbox-Verzeichnisse findet der Assistent selbst, und vor dem Ausfuehren zeigt er den gleichwertigen Kommandozeilenaufruf. Nur curses aus der Standardbibliothek, keine neue Abhaengigkeit. Beim Durchfahren ueber ein PTY kamen zwei Dinge heraus: keypad(True) loest die Pfeiltasten auf diesem Server nicht auf - getch() liefert 27, 91, 66 statt KEY_DOWN, wofuer ein unpassendes terminfo genuegt. Das fuehrende ESC haette als "zurueck" gegolten und den Assistenten bei jedem Pfeildruck verlassen. Er loest die Sequenzen jetzt selbst auf; ein einzelnes ESC wirkt weiterhin als Abbruch. Und: Bricht die Verbindung weg, waehrend Kerio gestoppt ist, stirbt das Script an SIGHUP und laesst den Dienst unten - genau so passiert, als der Testtreiber die Verbindung schloss. ServiceController.abgesichert() faengt SIGHUP, SIGTERM und SIGINT ab und startet den Dienst wieder, bevor der Abbruch durchgereicht wird. Gegen den Testserver geprueft: Signal mitten im Stopp-Fenster, Dienst kommt hoch, Daten unberuehrt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b9cbf65fac
commit
24070cba4e
@@ -4,13 +4,32 @@ Werkzeuge für Kerio Connect auf der Kommandozeile.
|
||||
|
||||
| Datei | Zweck |
|
||||
| --- | --- |
|
||||
| [`kerio_tui.py`](kerio_tui.py) | Assistent mit Menüführung — ohne Kommandozeilenparameter |
|
||||
| [`kerio_rename_user.py`](kerio_rename_user.py) | Benutzer umbenennen — Login-Name **und** Mailbox-Verzeichnis im Store |
|
||||
| [`kerio_users_config.py`](kerio_users_config.py) | Lesen und Ändern von `users.cfg` |
|
||||
| [`kerio_common.py`](kerio_common.py) | Gemeinsame Bausteine: Admin-API-Client, Dienststeuerung |
|
||||
|
||||
Das Script läuft **lokal auf dem Kerio-Server als root**, braucht nur die
|
||||
Alles läuft **lokal auf dem Kerio-Server als root**, braucht nur die
|
||||
Python-Standardbibliothek und bietet `--dry-run`.
|
||||
|
||||
## Der Assistent
|
||||
|
||||
Wer nicht mit Parametern hantieren will:
|
||||
|
||||
```bash
|
||||
sudo ./kerio_tui.py
|
||||
```
|
||||
|
||||
Der Assistent zeigt die vorhandenen Benutzer zur Auswahl, findet **verwaiste
|
||||
Mailbox-Verzeichnisse von selbst** (Verzeichnisse ohne zugehörigen Benutzer),
|
||||
fragt die nötigen Angaben ab und zeigt vor dem Ausführen den gleichwertigen
|
||||
Kommandozeilenaufruf — wer ihn kennt, tippt ihn beim nächsten Mal direkt.
|
||||
|
||||
Bedienung: Pfeiltasten oder `j`/`k`, Enter bestätigt, `q` oder Esc geht zurück.
|
||||
|
||||
Geändert wird erst nach einer ausdrücklichen Bestätigung; bis dahin lässt sich
|
||||
jeder Schritt abbrechen.
|
||||
|
||||
## Getestet
|
||||
|
||||
Gegen **Kerio Connect 10.0.9 patch 2** auf Debian 12, mit lizenziertem Server
|
||||
@@ -39,6 +58,13 @@ Und für `--adopt`, mit gelöschtem Altbenutzer und neu angelegtem Zielbenutzer:
|
||||
| Neue Mail an den Zielbenutzer | zugestellt |
|
||||
| Verwaistes Verzeichnis | keines übrig |
|
||||
|
||||
Der Assistent wurde über ein PTY durch alle Abläufe gefahren; dabei kam heraus,
|
||||
dass `keypad(True)` auf diesem Server die Pfeiltasten **nicht** auflöst —
|
||||
`getch()` liefert `27, 91, 66` statt `KEY_DOWN`. Ein fehlendes oder
|
||||
unpassendes terminfo reicht dafür. Die Oberfläche löst die Sequenzen deshalb
|
||||
selbst auf, sonst würde das führende ESC als „zurück" gelten und der Assistent
|
||||
bei jedem Pfeildruck herausspringen.
|
||||
|
||||
Geändert haben sich nur Kerios eigene Index- und Statusdateien (`.journal.db`,
|
||||
`status.fld`, `index.fld`) — die schreibt der Server bei jedem Zugriff neu.
|
||||
|
||||
@@ -48,6 +74,7 @@ Dazu Unit-Tests unter [tests/](tests/):
|
||||
python3 tests/test_store.py
|
||||
python3 tests/test_users_config.py
|
||||
python3 tests/test_adopt.py
|
||||
python3 tests/test_tui.py
|
||||
```
|
||||
|
||||
---
|
||||
@@ -228,6 +255,10 @@ legt anschließend in der Administrationskonsole einen Alias an.
|
||||
- **Vorher ein Backup des Stores anlegen.** Das Script verschiebt Verzeichnisse.
|
||||
- Erst an einem Testbenutzer ausprobieren.
|
||||
- Der Benutzer sollte während des Laufs nicht angemeldet sein.
|
||||
- Bricht die SSH-Verbindung weg, während Kerio gestoppt ist, fängt das Script
|
||||
das Signal ab und **startet den Dienst wieder**, bevor es sich beendet.
|
||||
Verlassen sollte man sich darauf trotzdem nicht — besser in `tmux` oder
|
||||
`screen` arbeiten.
|
||||
- Nach der Umbenennung müssen sich alle Mail-Clients mit dem neuen Login neu
|
||||
anmelden.
|
||||
- Gruppenmitgliedschaften bleiben erhalten: Kerio referenziert Gruppen über
|
||||
|
||||
Reference in New Issue
Block a user