Releases: duczz/ha-dnsmith
Releases · duczz/ha-dnsmith
Release list
v0.1.1
🚀 What's New: Fixes und Aufräumarbeiten
Ein kleines Release ohne neue Anbieter: vier Fehlerbehebungen, eine ehrlichere Anbieter-Doku und etwas Vorarbeit unter der Haube.
🐛 Fixes
- 🔑 Wechsel der Anmeldevariante - Wer bei einem Anbieter mit mehreren Anmeldevarianten (Dyn, spdyn, Gigahost) die Variante wechselt, hat danach nicht mehr die Zugangsdaten der alten Variante im Speicher. Sie werden beim Speichern gelöscht.
- 🔌 Verbindung testen bei Haupt-Domains - Bei Anbietern, die den Eintrag erst suchen (Lookup), fand der Test einen Eintrag direkt auf der Haupt-Domain (ohne Subdomain) nicht. Das ist behoben.
- ☁️ Hetzner - Das Warten auf die Bestätigung einer Änderung nutzt jetzt den dokumentierten Zonen-Endpunkt (
/zones/actions/{id}). Die Änderung stützt sich auf die API-Beschreibung und eine Messung im Projekt ddns-updater (Issue #1136); mit einem eigenen Hetzner-Konto wurde sie nicht erprobt. - 🌍 Dynu - Eine Gruppe wird unter dem Parameternamen
groupgesendet, den Dynu heute dokumentiert (früherlocation). Ohne Gruppe ändert sich nichts. Gegen ein echtes Konto mit Gruppe wurde das nicht geprüft.
📖 Doku
- ChangeIP: Die Beschreibung nennt jetzt, was der Dienst noch bietet - bezahltes DDNS für eigene Domains. Die kostenlosen Domains auf
changeip.comhat der Anbieter im Juni 2026 eingestellt.
🔧 Under the Hood
- 🧱 Ein Manifest kann künftig mehrere Betriebsarten eines Anbieters beschreiben (
modes:). Noch nutzt kein Anbieter das, für Nutzer ändert sich nichts. - ✅ 330 Tests (327 bestanden, 3 auf Windows-Dateisystemen übersprungen), CI prüft Manifeste, generierte Doku und den App-Build.
📄 Vollständiges Änderungsprotokoll: CHANGELOG.md
v0.1.0
🎉 Initial Release: Welcome!
Die erste Veröffentlichung von DNSmith - ein zentraler DDNS-Hub für HomeAssistant. Statt einer eigenen App pro Anbieter: Einmal installieren, Anbieter aus über 60 vorbereiteten Manifesten wählen, Zugangsdaten eintragen, fertig. Beliebig viele Einträge über beliebig viele Anbieter, alles über die Ingress-Oberfläche, keine YAML-Datei.
✨ Features
- 🗂️ Über 60 Anbieter - von DuckDNS und Dynu bis Cloudflare, Route 53, Google Cloud DNS und Aliyun. 54 davon rein deklarativ über ein Manifest, ohne eine Zeile Code; 10 als Python-Modul, wo die API eine Sitzung, eine Signatur oder mehrere Schritte verlangt (Porkbun, DreamHost, DNSPod, Hetzner, netcup, OVH, Route 53, Aliyun, Google Cloud DNS).
- 🧩 Zwei generische Einträge für alles, was nicht in der Liste steht: Generisches DynDNS2 für jeden Dienst mit dem klassischen Protokoll, und ein eigener HTTP-Provider mit frei einstellbarer Methode, Authentifizierung, Parameternamen und Erfolgskriterium.
- 🌐 IPv4 und IPv6 gleichberechtigt - ein Eintrag pflegt A, AAAA oder beides.
- 📡 Vier IP-Quellen je Adressfamilie - automatisch übers Internet, aus einer HomeAssistant-Entität (der Regelfall bei DS-Lite), feste Adresse, oder gar nicht. Liefert eine Entität keinen brauchbaren Wert, bleibt der Eintrag unangetastet statt falsch gesetzt zu werden.
- 🩺 CGNAT- und DS-Lite-Erkennung - die Oberfläche sagt, warum der Anschluss trotz erfolgreichem Update nicht erreichbar ist.
- 🔌 Verbindung testen mit einem echten lesenden Aufruf gegen den Anbieter, wo die API das zulässt.
- 💬 Fehler mit nächstem Schritt statt reiner HTTP-Codes - die Originalmeldung bleibt aufklappbar.
- ⏱️ Schonender Umgang mit Anbietern - aktualisiert nur bei tatsächlicher IP-Änderung, mit Abklingzeit und Backoff; Sperren werden erkannt und abgewartet.
🛡️ Reliability
- 🔒 Kein offener Port - die Oberfläche läuft ausschließlich über Ingress.
- 🛡️ Kein Sprungbrett ins Heimnetz - jede vom Nutzer angegebene Adresse wird vor dem Aufruf aufgelöst und gegen lokale Netze geprüft (inklusive Schutz vor DNS-Rebinding), Weiterleitungen werden nicht verfolgt.
- 🧯 Zugangsdaten werden konsequent aus Logs herausgefiltert - auch nach einem Fund im Redaktor selbst gegengeprüft und nachgezogen.
- 📋 Eine unlesbare Konfiguration beendet den Prozess nicht mehr: DNSmith startet, zeigt den Grund, lässt die Datei unangetastet und speichert nichts.
🔧 Under the Hood
- ✅ Eigener Python-Executor statt der früheren Go-Engine - ein Prozess, kein übersetzter Fremdcode im Image.
- ✅ 330 Tests, CI prüft Manifeste, generierte Doku und den App-Build bei jeder Änderung.
- ✅ Eigenes AppArmor-Profil.
📄 Vollständiges Änderungsprotokoll: CHANGELOG.md
📖 Doku: README.md