Add CNAME create update and delete tools

This commit is contained in:
Mikei386
2026-08-28 21:28:45 +02:00
parent 4754626d34
commit c6ab0e48c1
5 changed files with 400 additions and 51 deletions
+33 -31
View File
@@ -1,57 +1,59 @@
# STRATO-DNS-MCP – Read-only-Prototyp
# STRATO-DNS-MCP
Dieser Prototyp prüft den undokumentierten HTTP-Leseweg des STRATO-
Kundenbereichs. Er kann sich anmelden und die CNAME-Einträge genau einer
konfigurierten DNS-Zone auflisten.
**Diese Version kann keine DNS-Einträge erstellen, ändern oder löschen.** Im
Quellcode existiert absichtlich keine Speichermethode.
Dieser MCP verwaltet die CNAME-Einträge genau einer konfigurierten DNS-Zone im
STRATO-Kundenbereich. Er kann Einträge auflisten, anlegen, ändern und löschen.
## Technische Grundlage
STRATO dokumentiert für normale Hosting-Domains nur die Verwaltung im
Kunden-Login. Der öffentliche Certbot-Plugin
[`FlixMa/certbot-dns-strato`](https://github.com/FlixMa/certbot-dns-strato)
zeigt jedoch einen funktionsfähigen HTTP-Ablauf über
`https://www.strato.de/apps/CustomerService`. Der hier verwendete Leseweg wurde
ohne Certbot-Abhängigkeit neu und deutlich defensiver implementiert.
zeigt den von STRATO selbst verwendeten HTTP-Ablauf über
`https://www.strato.de/apps/CustomerService`.
Referenzstand der Untersuchung:
Der MCP liest vor jeder Änderung das komplette TXT/CNAME-Formular, verändert
genau den gewünschten CNAME, sendet alle übrigen Einträge unverändert zurück
und liest danach erneut zur Kontrolle. Referenzstand der Untersuchung:
`FlixMa/certbot-dns-strato@67df6dcfc3ef0035ec5aa5daf7c5b0bd8310d7fb`.
## Lokaler Test – noch nicht produktiv installieren
## Werkzeuge
- `strato_connection_status`
- `strato_list_cnames`
- `strato_create_cname`
- `strato_update_cname`
- `strato_delete_cname`
## Konfiguration und Start
1. `strato.env.example` außerhalb von Git nach `strato.env` kopieren.
2. Dort Benutzername, Passwort und DNS-Zone eintragen.
3. Falls STRATO TOTP verlangt, zusätzlich TOTP-Secret und den bei STRATO
angezeigten Gerätenamen eintragen.
4. Image bauen und zunächst ausschließlich `strato_connection_status` sowie
`strato_list_cnames` testen.
2. Benutzername, Passwort und DNS-Zone eintragen.
3. Falls STRATO TOTP verlangt, TOTP-Secret und Gerätenamen eintragen.
4. Für Änderungen zusätzlich `STRATO_WRITE_ENABLED=true` setzen. Ohne diesen
Schalter bleiben die drei Schreibwerkzeuge gesperrt.
Das Docker-Image wird direkt aus diesem Repository gebaut:
Das Docker-Image wird direkt aus diesem Repository gebaut. Der historische
Image-Name bleibt erhalten, damit eine bestehende Unraid-Vorlage ohne Umbau
weiter funktioniert:
```sh
docker build -t strato-dns-mcp:readonly .
```
Die Offline-Tests benötigen keine Zugangsdaten und kontaktieren STRATO nicht:
Die Offline-Tests benötigen keine Zugangsdaten, kontaktieren STRATO nicht und
prüfen auch, dass bestehende TXT- und CNAME-Einträge erhalten bleiben:
```sh
python3 -m unittest -v tests/test_strato_readonly.py
```
Zugangsdaten, TOTP-Werte, Cookies und STRATO-Session-ID werden weder geloggt
noch als Toolausgabe zurückgegeben. Fehlermeldungen enthalten nur eine kurze
Fehlerklasse.
noch als Toolausgabe zurückgegeben.
## Noch bewusst nicht enthalten
## Produktiver Funktionstest
- kein Compose-Deployment
- keine Unraid-XML
- keine Hermes-Registrierung
- keine schreibenden Werkzeuge
- keine produktive Installation
Diese Teile kommen erst, wenn der Read-only-Test gegen das aktuelle STRATO-
Konto funktioniert. Falls sich der Login oder das HTML geändert hat, wird nur
der Parser angepasst; es findet kein Schreibversuch statt.
Echte DNS-Schreibtests werden nicht automatisch ausgeführt. Nach dem Neubau
des Containers sollte ein eigens dafür vorgesehener Testname einmal angelegt,
geändert und wieder gelöscht werden. Danach stehen die neuen Werkzeuge in
Hermes nach einer frischen MCP-Verbindung beziehungsweise einer neuen Sitzung
zur Verfügung.