mirror of
https://github.com/skoelle/dyndns-updater.git
synced 2026-09-17 16:10:25 +00:00
1.7 KiB
1.7 KiB
AGENTS.md
Projekt
Kleiner Docker-Container, der Cloudflare-A-Records (DNS-only) + eine FreeDNS-URL mit der aktuellen öffentlichen IPv4-Adresse pflegt. IP wird ausschließlich über die FritzBox TR-064-Schnittstelle ermittelt.
Kontext: SPEC.md (Design), PLAN.md (Tasks),
README.md (Betrieb).
Struktur
app/– Kernmodule (Python 3.12)config.py– ENV-basierte Konfiguration + Validierungstate.py– persistierte letzte IP (/app/data/last-known-ip.json, ephemeral im Container)fritzbox.py– IP-Ermittlung via TR-064 (Retry/Backoff)cloudflare.py– A-Record-Update (DNS-only)freedns.py– FreeDNS-Update-Callhealthcheck.py– Healthchecks-Pingsmain.py– Flask-Webhook (/webhook/update,/healthz) + Poll-Scheduler
.env.example– Referenz aller ENV-Variablen (Pflicht: FRITZBOX_, CLOUDFLARE_)
Befehle
- Tests: keine Test-Suite vorhanden
- Lint/Format:
ruff check .undruff format --check .(in.venvviapython3 -m venv .venv && . .venv/bin/activate) - Lokal:
python -m app.main(im.venv, deps ausrequirements.txt) - Container:
docker compose up -d
Konventionen
- CREDENTIALS NIE committen.
.envist gitignored – nie mit-fhinzufügen. - Keine Co-Autoren in Commits.
- Keine Kommentare im Code außer auf Nachfrage.
- Python-Code mit Ruff formatieren (line-length 100, double quotes).
- Änderungen an
SPEC.md/PLAN.md/README.mdmitziehen, wenn sich Design/Betrieb ändert.
License
MIT License - Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de)
- Full text in
LICENSE - License headers in all source code files