fix: use exact DirectAdmin DNS record deletion
This commit is contained in:
parent
7142c4cef8
commit
04f31306b5
1 changed files with 18 additions and 2 deletions
18
README.md
18
README.md
|
|
@ -110,10 +110,26 @@ wan-ip-guard.service: Failed to spawn 'start' task: Permission denied
|
|||
|
||||
1. **IP detectie:** Haalt het WAN IP op via `ifconfig.me` met fallback naar `api.ipify.org` en `icanhazip.com`
|
||||
2. **State vergelijking:** Vergelijkt met het laatst opgeslagen IP in de state file
|
||||
3. **DNS update:** Voor elke record: verwijder oud A-record + voeg nieuw A-record toe via DirectAdmin API. Per-record foutafhandeling — één falende record blokkeert de rest niet.
|
||||
3. **DNS update:** Voor elke record worden eerst alle bestaande A-records met de exacte oude waarde verwijderd en daarna één nieuw A-record toegevoegd via DirectAdmin API. De delete-aanroep gebruikt `action=select` en een URL-gecodeerde waarde `name=<recordnaam>&value=<oude-ip>` in parameter `arecs0`. De waarde moet dus niet `recordnaam=ip` zijn.
|
||||
4. **State persist:** Het nieuwe IP wordt pas opgeslagen als **alle** DNS-updates gelukt zijn. Bij gedeeltelijke mislukking retried de volgende timer-run.
|
||||
5. **Notificatie:** Stuurt WhatsApp bericht met oud/nieuw IP en status per record.
|
||||
|
||||
### DirectAdmin A-record verwijderen
|
||||
|
||||
De bewezen API-vorm voor één exact A-record is:
|
||||
|
||||
```text
|
||||
CMD_API_DNS_CONTROL?domain=eddydevink.nl&action=select&arecs0=<urlencoded name=<recordnaam>&value=<oude-ip>>
|
||||
```
|
||||
|
||||
Voorbeeld vóór URL-encoding:
|
||||
|
||||
```text
|
||||
name=changeme&value=94.157.123.170
|
||||
```
|
||||
|
||||
Encodeer het volledige `name=...&value=...`-paar. Controleer na de API-call de zone opnieuw; een API-antwoord `Records verwijderd` is onvoldoende bewijs wanneer het oude record nog in de zone staat.
|
||||
|
||||
## Files
|
||||
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in a new issue