62 lines
1.8 KiB
Markdown
62 lines
1.8 KiB
Markdown
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, '-' for stdout
|
|
-s string
|
|
Subdomain, e.g. blog. Use @ for root (default "<UNSET>")
|
|
-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
|
|
|