Sign inSign up

gerald77/dnsmasq-conf-api

By gerald77

•Updated 7 days ago

Optionale Schreib-Schnittstelle zum Bearbeiten der statischen Leases einer dnsmasq.conf

Image
0

198

gerald77/dnsmasq-conf-api repository overview

⁠dnsmasq-conf-api

Optionale Schreib-Schnittstelle zum Bearbeiten der statischen Leases (dhcp-host) in einer dnsmasq.conf. Sie gehört zur Webseite gerald77/dnsmasq-leases⁠ und wird von deren nginx unter /api/ angesprochen. Reines Node ohne Abhängigkeiten, kein veröffentlichter Port.

Quellcode, Tests und ausführliche Doku: https://github.com/geraldpublic/Dnsmasq-Leases⁠

⁠Was sie tut

  • Ändert immer genau eine dhcp-host-Zeile oder hängt eine neue hinter der letzten an. Gelöscht wird nichts. Alles andere in der Datei (Kommentare, andere Optionen, Zeilenenden) bleibt Zeichen für Zeichen erhalten.
  • Prüft vor dem Schreiben MAC, IP, Hostname, Lease-Zeit und Tags. Doppelte MACs, IPs und Hostnamen werden abgelehnt, weil dnsmasq beim Start daran scheitert.
  • Schreibt die Datei an Ort und Stelle (Besitzer und Rechte bleiben). Hat sich die Zeile inzwischen geändert, gibt es einen Konflikt (HTTP 409) statt eines Überschreibens.
  • Legt vor jeder Änderung eine Sicherung ab (die letzten 50).
  • dnsmasq übernimmt geänderte dhcp-host-Zeilen erst nach einem Neustart. Die Schnittstelle startet nichts und hat keinen Zugriff auf den Docker-Socket.

⁠ACHTUNG: beschreibt die echte Datei

Die eingehängte dnsmasq.conf wird wirklich verändert. Eine Sicherung liegt im Volume /sicherung; trotzdem vorher prüfen, welche Datei eingehängt wird.

⁠Schnellstart

Zusammen mit der Webseite am einfachsten über Docker Compose (Profil bearbeiten, siehe Repository⁠). Einzeln:

docker run -d --name dnsmasq-conf-api \
  --user 1000:100 --read-only --cap-drop ALL \
  --security-opt no-new-privileges:true \
  -v /pfad/zur/dnsmasq.conf:/daten/dnsmasq.conf \
  -v dnsmasq-conf-sicherung:/sicherung \
  gerald77/dnsmasq-conf-api:latest

Der Benutzer (--user) braucht Schreibrecht auf die Datei; sonst meldet GET /api/status schreibbar: false und die Webseite bleibt schreibgeschützt. Die Webseite erreicht die Schnittstelle unter dem Containernamen dnsmasq-conf-api auf Port 3001, beide Container müssen im selben Docker-Netz liegen.

⁠Schnittstelle

AufrufWirkung
GET /api/status{ "schreibbar": true | false }
POST /api/dhcp-hostneuen Eintrag hinter dem letzten dhcp-host anlegen
PUT /api/dhcp-host/<zeile>Zeile ersetzen; alt = Zeile, wie sie angezeigt wurde

⁠Einstellungen

VariableStandard im ImageBedeutung
CONF_FILE/daten/dnsmasq.confdie zu ändernde Datei
BACKUP_DIR/sicherungOrdner für die Sicherungen
HOST0.0.0.0Adresse, an die gebunden wird
PORT3001Port

⁠Sicherheit

  • Die Schnittstelle selbst prüft keine Anmeldung. Sie darf nie direkt veröffentlicht werden; der Port gehört nur ins interne Docker-Netz. Die Anmeldung (Basic-Auth für alles außer GET) übernimmt der nginx der Webseite über /etc/nginx/htpasswd.
  • Basic-Auth sendet das Kennwort über HTTP unverschlüsselt und ist daher nur für ein vertrauenswürdiges LAN gedacht.
  • Zeilenumbrüche und Steuerzeichen in den Feldern werden abgelehnt, damit sich keine weitere Option einschleusen lässt.

⁠Lizenz und Haftungsausschluss

MIT-Lizenz (maßgeblich ist der englische Originaltext):

MIT License

Copyright (c) 2026 Gerald Brunner

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Haftungsausschluss: Die Software wird „wie besehen" ohne jegliche Gewährleistung bereitgestellt. Die Nutzung erfolgt auf eigene Gefahr; die Autoren haften nicht für Schäden oder Datenverlust, die aus der Nutzung entstehen. Das gilt besonders für die Schnittstelle dnsmasq-conf-api, die die eingehängte dnsmasq.conf verändert.

Tag summary

Content type

Image

Digest

sha256:3561b142c…

Size

57.9 MB

Last updated

7 days ago

docker pull gerald77/dnsmasq-conf-api