Created
October 23, 2017 12:31
-
-
Save jsonn/80339e792e5ffb78d276ebc3152b8531 to your computer and use it in GitHub Desktop.
Basic Gandi LiveDNS client
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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