Really basic sinatra web-app that reads the client ip, and as long as the api-key parameter matches the expected value, it fires off a request to update a cloudflare DNS record with that client ip address.
This has been working really well for me with the DD-WRT Custom DDNS Service setup & heroku. It probably breaks terribly if there's a proxy between the router and the web service.
heroku config must contain these env variables:
CLOUDFLARE_ZONE
,CLOUDFLARE_RECORD
: The zone and record to updateX-Auth-Email
,X-Auth-Key
: The Cloudflare authentication credentialsLOCAL_API_KEY
: A locally defined secret that incoming requests must contain in order to trigger a DNS update.
Here's an example of the DD-WRT setup: