Instantly share code, notes, and snippets.

Embed
What would you like to do?
Dynamic DNS with Cloudflare - Python Script
#!/usr/bin/python
# Set up a new A record in Cloudflare, add the details of it along with your account details below
# Make sure this script runs on startup (or whenever you get a new IP...)
#
# @author Aaron Rice <aaron@duedil.com>
import urllib
import json
import sys
try:
new_ip = urllib.urlopen("http://my-ip.heroku.com/").read()
except:
print "Error getting IP"
sys.exit()
# Put your Cloudflare settings here.
# The host must be an A record that already exists in cloudflare
data = {
"a" : "DIUP",
"tkn" : "API_TOKEN_HERE",
"u" : "CLOUDFLARE_EMAIL_HERE",
"ip" : new_ip.strip(),
"z" : "DOMAIN_HERE",
"hosts" : "DNSNAME.DOMAIN_HERE",
}
try:
dns_response = json.loads(urllib.urlopen("https://www.cloudflare.com/api_json.html", urllib.urlencode(data)).read())
if dns_response[u'result'] == "success":
print "IP updated to " + new_ip,
else:
print "Error Setting IP"
except:
print "Error with cloudflare API"
@mooglestiltzkin

This comment has been minimized.

mooglestiltzkin commented Mar 30, 2013

Hi Riceo,

May i ask what this script is, how it works ?

I'm trying to get cloudflare to work with my dynamic dns service for my website which uses no-ip.info

Does your script somehow make this possible ?

@riceo

This comment has been minimized.

Owner

riceo commented Jul 2, 2013

Hi,

Sorry I haven't responded sooner - I had no idea you commented.

This was a quick hack for dynamic DNS via Cloudflare. If you run it as a cronjob on your server it will use the Cloudflare API to update your server's current public IP adress for the specified DNS entry on Cloudflare.

The change should only take a few minutes max to propagate.

I wouldn't trust it in a production environment, but it should work fine for testing / dev.

Let me know if you have any problems, and feel free to email me if I don't respond quick enough here!

Cheers,
Aaron

@tiagoad

This comment has been minimized.

tiagoad commented Feb 11, 2014

Hey! I made a script similar to this, but it can update several hosts (like example.com and www.example.com).

Check it out here: https://github.com/TTSDA/CfDDNS

@riceo

This comment has been minimized.

Owner

riceo commented Apr 12, 2014

@ttsda nice!

@nardev

This comment has been minimized.

nardev commented Jan 9, 2017

seems like parameters are changed now...

@riceo

This comment has been minimized.

Owner

riceo commented Nov 20, 2018

I'd imagine so!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment