CLI tool to manage cloudflare DNS records ## Installation ### Using [go](https://go.dev) ```bash ❯ go install go.balki.me/cloudflare-dns-cli@latest # Run directly without installing ❯ go run go.balki.me/cloudflare-dns-cli@latest -h ``` ### Using [docker](https://www.docker.com) ```bash ❯ mkdir -p $HOME/bin ❯ docker run --pull=always --rm -v "$HOME/bin:/op" golang sh -c "go install go.balki.me/cloudflare-dns-cli@latest && install -o $(id -u) -g $(id -g) /go/bin/cloudflare-dns-cli /op/" # Run directly without installing ❯ docker run --pull=always --rm golang go run go.balki.me/cloudflare-dns-cli@latest -h ``` ## Features 1. Add/Modify `A`, `AAAA`, `CNAME`, `MX` records 2. List/Delete records 3. Save all records in JSON format ## Usage ```help Usage of cloudflare-dns-cli: -a string Cloudflare API Token. env var: CF_TOKEN -c string CNAME target -d string Domain name, e.g. example.com. env var: DOMAIN -i value IP address (default 127.0.0.1) -m Set mx record with cname value -o string Path to save all records as json, e.g. ./records.json -s string Subdomain, e.g. blog. Use @ for root (default "") -x Delete records of subdomain ``` ## Demo ===> [HERE](https://gitea.balki.me/balki/cloudflare-dns-cli/src/branch/main/demo.cast) <=== ## Similar * https://github.com/earlchew/cloudflare-cli * https://github.com/tech-otaku/cloudflare-dns * (official) https://github.com/cloudflare/python-cloudflare#cli ## Why another cli? 1. Keep it simple with minimum dependency and features 2. Uses [libdns](https://github.com/libdns) library maintained by [caddy](https://caddyserver.com) team. libdns provides uniform api for many dns providers. Mostly `s/cloudflare/XYZ/` should work when moving to a different dns provider