Cloudflare is a popular DNS and CDN service provider. Being so, it lacks some basic functions like separate API keys for domains. So to mitigate the risk of putting your Global API Key everywhere on untrusted servers, I wrote a simple proxy for Cloudflare API with Rust and Rocket.rs.
Usage is simple: First clone the repo. Install Rust using rustup
and compile. Install diesel.rs
and setup PostgreSQL. Edit the .env
file to provide DB information to the system and diesel setup
. And now you are good to go!
Then create a user, a site and give the user privilege:
cargo run --bin new_user
cargo run --bin new_site
cargo run --bin new_priv
And run the web app with:
ROCKET_CFUSER=<CF_EMAIL> ROCKET_CFKEY=<CF_KEY> cargo run
To call the API, simply use curl:
curl --verbose --header "Content-Type: application/json" \
--request POST \
--data '{"user":"<USER>","key":"<API_KEY>","zone":"amayume.net","rec":"py.amayume.net","rectype":"A", "value":"119.44.22.22"}' \
http://ddns.amayume.net:1337/update
Hope it can be useful for you :)