# az-dns

Kleines Go-Tool zum Aktualisieren von Hetzner DNS-A/AAAA-Records auf die aktuelle öffentliche IPv4/IPv6-Adresse.

## Konfiguration

Folgende Environment-Variablen müssen gesetzt werden:

- `HETZNER_TOKEN`: Hetzner Cloud API Token mit DNS-Schreibrechten.
- `HOSTNAME`: Der Hostname innerhalb der Zone, z. B. `@` für den Zonen-Apex oder `vpn`.
- `DOMAIN`: Die Zonendomain, z. B. `example.com`.
- `TTL`: TTL des Records als Ganzzahl (Sekunden).

Optionale Variablen:

- `LOG_LEVEL`: `debug`, `info` oder `warn` (Standard).
- `DRY_RUN`: Bei `true`/`1` werden nur die geplanten Änderungen geloggt, aber nicht ausgeführt.

## Build & Ausführung

Entweder einfach das richtige Binary verwenden (in ./binaries) oder selber compilieren (das dauert 3 Sekunden)
```bash
# Installieren/kompilieren
GOCACHE=$(pwd)/.gocache go build -o az-dns

# ausführen (setzt beide Records falls Adressen ermittelt werden können)
HETZNER_TOKEN=... HOSTNAME=... DOMAIN=... TTL=300 LOG_LEVEL=info ./az-dns
```

Das Programm versucht, sowohl die IPv4- als auch die IPv6-Adresse zu ermitteln. Gelingt nur eine der beiden Erkennungen, wird nur der entsprechende Record geschrieben. Fehlt ein Record, wird er neu angelegt, ansonsten aktualisiert.

## Hinweise

- Der `HOSTNAME` wird automatisch auf Hetzners Darstellung normalisiert (`@` für den Apex).
- Das Tool nutzt `https://api.ipify.org` bzw. `https://api6.ipify.org` zur Adressfeststellung.
- DNS-Updates erfolgen über die neue Hetzner Cloud DNS-API unter `https://api.hetzner.cloud/v1`.
- Im Dry-Run-Modus werden nur Logausgaben erzeugt, was sich gut für Cronjobs/CI eignet.


## LIZENZ
The MIT License (MIT) --> siehe LICENSE-File

