Adding refresh script, optimizing pipeline, small site change
This commit is contained in:
parent
9d5ce3cba2
commit
64eb7fe117
6 changed files with 85 additions and 3 deletions
2
scripts/.gitignore
vendored
Normal file
2
scripts/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
venv/
|
||||
.idea/
|
52
scripts/cloudflare-updater.py
Normal file
52
scripts/cloudflare-updater.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
import sys, logging, ipaddress, json
|
||||
import CloudFlare
|
||||
|
||||
|
||||
def main(TOKEN, NEW_IP):
|
||||
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
|
||||
cf = CloudFlare.CloudFlare(token=TOKEN)
|
||||
zones = cf.zones.get()
|
||||
zone_identifier = []
|
||||
for zone in zones:
|
||||
if zone['name'] == "firq.dev":
|
||||
zone_identifier = zone
|
||||
|
||||
if not zone_identifier:
|
||||
raise Exception("No Zone identifier extracted")
|
||||
|
||||
logging.info(f" Zone Identifier is {zone_identifier['id']}")
|
||||
|
||||
records = cf.zones.dns_records.get(zone_identifier['id'])
|
||||
update_records = []
|
||||
|
||||
if not records:
|
||||
raise Exception(f"Could not extract records from {zone_identifier['name']}")
|
||||
|
||||
for record in records:
|
||||
if record['type'] == 'AAAA':
|
||||
update_records.append({"id": record['id'], "type": record['type'], "name": record['name'], "content": record['content']})
|
||||
|
||||
logging.info(f" Got the following DNS records registered to {zone_identifier['name']}")
|
||||
logging.info(json.dumps(update_records, sort_keys=True, indent=2))
|
||||
records_done = 0
|
||||
|
||||
for record in update_records:
|
||||
data = {
|
||||
"name": record['name'],
|
||||
"type": record['type'],
|
||||
"content": NEW_IP
|
||||
}
|
||||
try:
|
||||
cf.zones.dns_records.patch(zone_identifier['id'], record['id'], data=data)
|
||||
records_done += 1
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
logging.info(f"Finished updating {records_done} records for {zone_identifier['name']}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
assert len(sys.argv) == 3
|
||||
assert isinstance(ipaddress.ip_address(sys.argv[2]), ipaddress.IPv6Address), \
|
||||
f'IP {sys.argv[2]} is not a valid IPv4 address'
|
||||
main(sys.argv[1], sys.argv[2])
|
1
scripts/requirements.txt
Normal file
1
scripts/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
|||
cloudflare>=2.11.1
|
Loading…
Add table
Add a link
Reference in a new issue