Skip to content

Releases: duczz/ha-dnsmith

Release list

v0.1.1

Choose a tag to compare

@duczz duczz released this 24 Sep 06:39

🚀 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 group gesendet, den Dynu heute dokumentiert (früher location). 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.com hat 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

Choose a tag to compare

@duczz duczz released this 23 Sep 14:55

🎉 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