Cloudflare DNS Updater written in Rust. Works for IPv4 and IPv6 alike.
.forgejo/workflows | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
cloudflare.json | ||
config.json | ||
COPYING | ||
README.md |
Cloudflare DNS Updater
Using the application
The application necessarily requires a valid Cloudflare API Token. Further the application must be located in the same network as the configured zones.
Environment Variable | Required | Usage |
---|---|---|
CF_API_TOKEN | x | Cloudflare API Token |
STATUS_POST_URL | Post Endpoint for a Uptime Monitor | |
Note: Variables can be stored in a .env file |
The actual configuration happens in two or more files:
interfaces.toml
contains all IPv6 interfaces available/used by the zone config files.
.toml
files in zone.d
contain settings for individual zones.
Example:
.env
CF_API_TOKEN=0123456789abcdef0123456789abcdef01234
CHECK_INTERVAL_SECONDS=30 // Defaults to 60 if missing
UPTIME_URL=https://example.org/uptime/id12 // Entirely optional
interfaces.toml
host_address = "::edcb:a098:7654:3210"
[interfaces]
example-interface = "::0123:4567:890a:bcde" # static part of the IP, the rest will be dynamically generated using the host
zone.d/example.org.toml
email = "owner@example.org" # Email of User owning the Zone
zone = "example.org" # Zone Name
id = "01234567890abcdefghijklmnopqrstu" # Zone ID
[[entry]]
name = "example.org" # "@" Symbol is not currently supported
type = ["AAAA", "A"] # Options are: "A" (IPv4/A Record) and/or "AAAA" (IPv6/AAAA Record)
interface = "example-interface" # Only required on type values 6 and 10
Debian Repository
TODO!