How tongtf/alidns-ddns works
alidns-ddns is a single-file Rust dynamic DNS client for Aliyun. Its workflow resolves settings, periodically detects IPv4 and/or IPv6 changes, queries the matching DNS records, and updates or adds records through Aliyun’s signed API. The README documents the IPv6 selection policy and supported modes; sampled code confirms configuration resolution, ipify lookup, and API request/reconciliation behavior. The excerpt omits some runtime-loop and IPv6 implementation details, so those links follow documented behavior rather than inspected call sites.
Main entry points: main.rs Runtime loop
Components 13
Configuration
- CLI arguments
- Environment
- Config file
- Runtime loop
src/main.rs - Config resolution
src/main.rs
IP Detection
- IPv4 detection
src/main.rs - IPv6 selection
src/main.rs
DNS Updates
- Record reconciliation
src/main.rs - Signed API client
src/main.rs
Other components
- Operator
- ipify API
- Local interfaces
- Aliyun DNS API
Connections 14
- Operator → CLI arguments: provides options
- Operator → Config file: provides settings
- Operator → Environment: sets variables
- Runtime loop → Config resolution: loads settings
- CLI arguments → Config resolution: overrides
- Environment → Config resolution: supplies values
- Config file → Config resolution: supplies values
- Runtime loop → IPv4 detection: detects address
- Runtime loop → IPv6 selection: detects address
- IPv4 detection → ipify API: requests IPv4
- IPv6 selection → Local interfaces: enumerates addresses
- Runtime loop → Record reconciliation: checks records
- Record reconciliation → Signed API client: queries or mutates
- Signed API client → Aliyun DNS API: sends signed requests