Cloudflare DNS Updater written in Rust. Works for IPv4 and IPv6 alike.
Find a file
Neshura 3639511414
All checks were successful
Build and Release Binary File / test (push) Successful in 25s
Run Tests on Code / run-tests (push) Successful in 35s
Build and Release Binary File / build (push) Successful in 23s
Build and Release Binary File / upload-release (push) Successful in 11s
Release Candidate 1.1.0-rc.1
2023-12-28 21:09:06 +01:00
.forgejo/workflows Remove excessive node install in actions 2023-12-26 18:23:50 +01:00
src Clippy linting 2023-12-27 21:29:15 +01:00
.gitignore Add config files to .gitignore 2023-12-25 15:19:44 +01:00
Cargo.lock Release Candidate 1.1.0-rc.1 2023-12-28 21:09:06 +01:00
Cargo.toml Release Candidate 1.1.0-rc.1 2023-12-28 21:09:06 +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 Fix README 2023-12-27 21:33:35 +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

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!