Cloudflare DNS Updater written in Rust. Works for IPv4 and IPv6 alike.
Find a file
2023-12-25 15:12:00 +01:00
.forgejo/workflows Add Clippy to CI 2023-12-25 15:10:42 +01:00
src Support for all Cloudflare DNS Types 2023-05-03 23:19:15 +02:00
.gitignore Switch from .json for secrets to .env 2023-12-25 15:11:17 +01:00
Cargo.lock Update Cargo files with correct version number 2023-03-21 10:45:05 +01:00
Cargo.toml Update Cargo files with correct version number 2023-03-21 10:45:05 +01:00
cloudflare.json Workaround for #2 did not work 2022-11-27 16:10:55 +01:00
config.json Disable IPv4 in Default Config 2023-03-02 15:44:06 +01:00
README.md Update readme with planned config setup 2023-12-25 15:12:00 +01:00

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:

interfaces.toml

[[interface]]
alias = "example-interface-1"     # this is what a user inputs in the zone.toml
address = ":da5e:d3ff:feeb:4346"  # 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
name = "example.org"                    # Zone Name
id = "0183f167a051f1e432c0d931478638b5" # Zone ID

[[entry]]
name="example.org"              # "@" Symbol is not currently supported 
type="10"                       # Options are: "4" (only IPv4/A Record), "6" (only IPv6/AAAA Record) and "10" (both)
interface="example-interface-1" # Only required on type values 6 and 10

Debian Repository

TODO!