initial commit
This commit is contained in:
commit
342b9ebdc8
1 changed files with 64 additions and 0 deletions
64
updater.py
Normal file
64
updater.py
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
from dnsimple import DNSimple
|
||||||
|
from urllib import urlopen
|
||||||
|
from sys import stderr, exit
|
||||||
|
|
||||||
|
domains = [{"domain": 'jshaver.net', "names": ["", "bc"]},
|
||||||
|
{"domain": 'theamazingshavers.com', "names": [""]}]
|
||||||
|
|
||||||
|
token = "esnmgLubCqZkRKiNsbwVQ"
|
||||||
|
|
||||||
|
email = "bobjohnbob@gmail.com"
|
||||||
|
|
||||||
|
ttl = 600
|
||||||
|
|
||||||
|
dns = DNSimple(email=email, api_token = token)
|
||||||
|
|
||||||
|
response = urlopen("http://icanhazip.com/")
|
||||||
|
|
||||||
|
if response.getcode() != 200:
|
||||||
|
stderr.write("Non 200 status when retrieving ip! Status: {}".format(response.getcode()))
|
||||||
|
exit(-1)
|
||||||
|
|
||||||
|
ip = response.readline().rstrip()
|
||||||
|
|
||||||
|
def get_a_record(domain, name):
|
||||||
|
records = dns.records(domain)
|
||||||
|
for record in records:
|
||||||
|
if record["name"] is name and ["record_type"] is 'A':
|
||||||
|
return record
|
||||||
|
return None
|
||||||
|
|
||||||
|
def update_record(domain, name, record, ip):
|
||||||
|
new = {"record": {"name": name, "content": ip}}
|
||||||
|
response = dns.update_record(domain, record["id"], new)
|
||||||
|
return response["record"]
|
||||||
|
|
||||||
|
def create_record(domain, name, ip):
|
||||||
|
new = {"record": {
|
||||||
|
"name": name,
|
||||||
|
"content",: ip,
|
||||||
|
"record_type": "A",
|
||||||
|
"ttl": ttl}}
|
||||||
|
response = dns.add_record(domain, new)
|
||||||
|
return response["record"]
|
||||||
|
|
||||||
|
def update_domain_ip(domain, name, ip):
|
||||||
|
record = get_a_record(domain, name)
|
||||||
|
|
||||||
|
if record is None:
|
||||||
|
return create_record(domain, name, ip)
|
||||||
|
|
||||||
|
if record["content"] is ip:
|
||||||
|
return record
|
||||||
|
|
||||||
|
return update_record(record, name, ip)
|
||||||
|
|
||||||
|
def main(domainList, ip):
|
||||||
|
for domain in domainList:
|
||||||
|
for name in domain["names"]:
|
||||||
|
update_domain_ip(domain, name, ip)
|
||||||
|
|
||||||
|
main(domains, ip)
|
||||||
|
|
Loading…
Reference in a new issue