Add CNAME create update and delete tools
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user