44[ ![ Rust] ( https://github.com/PRProd/dreamhost-ddns/actions/workflows/rust.yml/badge.svg )] ( https://github.com/PRProd/dreamhost-ddns/actions/workflows/rust.yml )
55<br >
66
7- A lightweight Rust CLI tool that updates a DreamHost DNS ** A record ** with your current public IP address .
7+ A lightweight Rust CLI tool that updates a DreamHost ** DNS A ** and ** DNA AAAA ** record with your current public WAN IP .
88
99This tool is designed for:
1010
@@ -20,13 +20,16 @@ It detects your current WAN IP and updates the DNS record **only when necessary*
2020
2121## Features
2222
23+ * ** IPv4 and IPv6 support** (dual stack)
2324* Fast public IP detection using multiple services
24- * Safe DNS updates that prevent outages
25- * Multiple configuration methods (CLI, env vars, config file)
26- * Structured logging with selectable log levels
27- * Designed for automation environments like Home Assistant
28- * Small, fast Rust binary with minimal dependencies
29-
25+ * Safe DNS updates with propagation validation
26+ * Reduces API calls via DNS record caching
27+ * Smart error handling (including rate‑limit and API faults)
28+ * Structured logging with configurable levels
29+ * Supports config from CLI, environment variables, or file
30+ * Dry‑run mode for verification w/o making changes
31+ * Small, fast Rust binary
32+
3033---
3134
3235## How It Works
@@ -68,11 +71,19 @@ If verification fails, the old record **is not removed**, ensuring your hostname
6871
6972Your public IP is detected using multiple services in parallel:
7073
74+ ** IPv4 services:**
7175* https://icanhazip.com
7276* https://api.ipify.org
77+ * https://ident.me
7378* https://ifconfig.me/ip
7479* https://checkip.amazonaws.com
7580
81+ ** IPv6 services:**
82+ * https://api64.ipify.org
83+ * https://ipv6.icanhazip.com
84+ * https://v6.ident.me
85+ * https://api-ipv6.ip.sb/ip
86+
7687The first successful response is used, improving reliability and speed.
7788
7889---
@@ -116,15 +127,17 @@ dreamhost-ddns \
116127 --record home.example.com
117128```
118129
119- Available arguments :
130+ Available options :
120131
121132```
122- --api-key <KEY> DreamHost API key
123- --record <HOSTNAME> DNS A record to update
124- --config <FILE> Optional config file
125- --log-level <LEVEL> Logging level
126- --verbose Shortcut for info-level logging
127- --dry-run Show actions without modifying DNS
133+ --api-key <KEY> DreamHost API key
134+ --record <HOSTNAME> DNS record to update
135+ --config <FILE> Optional config file
136+ --log-level <LEVEL> Logging level (error, warn, info, debug, trace)
137+ --verbose Shortcut for info level
138+ --dry-run Show actions without modifying DNS
139+ --ipv4-only Only detect & update IPv4 ("A")
140+ --ipv6-only Only detect & update IPv6 ("AAAA")
128141```
129142
130143---
0 commit comments