Skip to content

Instantly share code, notes, and snippets.

@jsonn
Created October 23, 2017 12:31
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jsonn/80339e792e5ffb78d276ebc3152b8531 to your computer and use it in GitHub Desktop.
Save jsonn/80339e792e5ffb78d276ebc3152b8531 to your computer and use it in GitHub Desktop.
Basic Gandi LiveDNS client
#!/usr/bin/env python
import json
import requests
import sys
APIKEY = "xxx"
def create_domain_record(domain, name, rrtype, ttl, values):
r = requests.post("https://dns.api.gandi.net/api/v5/domains/%s/records" % domain,
headers = { 'X-Api-Key': APIKEY },
json = { "rrset_name": name, "rrset_type": rrtype, "rrset_ttl": 300, "rrset_values": values })
def query_domain_record(domain, name, rrtype):
r = requests.get("https://dns.api.gandi.net/api/v5/domains/%s/records/%s/%s" % (domain, name, rrtype),
headers = { 'X-Api-Key': APIKEY })
return r.json().get('rrset_values', '')
def update_domain_record(domain, name, rrtype, ttl, values):
r = requests.put("https://dns.api.gandi.net/api/v5/domains/%s/records/%s/%s" % (domain, name, rrtype),
headers = { 'X-Api-Key': APIKEY },
json = { "rrset_ttl": 300, "rrset_values": values })
def delete_domain_record(domain, name, rrtype = None):
url = "https://dns.api.gandi.net/api/v5/domains/%s/records/%s" % (domain, name)
if rrtype:
url += "/%s" % rrtype
r = requests.delete(url,
headers = { 'X-Api-Key': APIKEY },
json = {})
if len(sys.argv) < 2:
print >> sys.stderr, "Missing option"
sys.exit(1)
if sys.argv[1] == 'create':
if len(sys.argv) < 7:
print >> sys.stderr, "Usage: gandi.py create domain record type ttl value..."
sys.exit(1)
create_domain_record(sys.argv[2], sys.argv[3], sys.argv[4], int(sys.argv[5]), sys.argv[6:])
elif sys.argv[1] == "update":
if len(sys.argv) < 7:
print >> sys.stderr, "Usage: gandi.py update domain record type ttl value..."
sys.exit(1)
update_domain_record(sys.argv[2], sys.argv[3], sys.argv[4], int(sys.argv[5]), sys.argv[6:])
elif sys.argv[1] == "delete":
if len(sys.argv) < 4:
print >> sys.stderr, "Usage: gandi.py delete domain record [type]..."
sys.exit(1)
if len(sys.argv) == 4:
delete_domain_record(sys.argv[2], sys.argv[3])
else:
delete_domain_record(sys.argv[2], sys.argv[3], sys.argv[4])
elif sys.argv[1] == "query":
if len(sys.argv) < 5:
print >> sys.stderr, "Usage: gandy.py query domain record type"
sys.exit(1)
for v in query_domain_record(sys.argv[2], sys.argv[3], sys.argv[4]):
print v
else:
print >> sys.stderr, "Unknown command"
sys.exit(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment