xkcd/.github/update-ovh.py
2023-11-27 16:10:17 +00:00

53 lines
2.0 KiB
Python
Executable File

# -*- encoding: utf-8 -*-
'''
First, install the latest release of Python wrapper: $ pip install ovh
To create an API token, visit:
OVH_DNS_DOMAIN=foobar.com
OVH_DNS_RECORD_ID=??????
x-www-browser https://www.ovh.com/auth/api/createToken?GET=/domain/zone/"$OVH_DNS_DOMAIN"/record/"$OVH_DNS_RECORD_ID"&PUT=/domain/zone/"$OVH_DNS_DOMAIN"/record/"$OVH_DNS_RECORD_ID"&POST=/domain/zone/"$OVH_DNS_DOMAIN"/refresh
This should create an API key with the following.
Add the last one and uncomment the code a few lines
below to be able to obtain the "$OVH_DNS_RECORD_ID" number.
GET /domain/zone/"$OVH_DNS_DOMAIN"/record/"$OVH_DNS_RECORD_ID"
PUT /domain/zone/"$OVH_DNS_DOMAIN"/record/"$OVH_DNS_RECORD_ID"
POST /domain/zone/"$OVH_DNS_DOMAIN"/refresh
#GET /domain/zone/"$OVH_DNS_DOMAIN"/record
'''
import sys
import os
import json
import ovh
# Instanciate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page
client = ovh.Client(
endpoint=os.environ['API_OVH_ENDPOINT'],
application_key=os.environ['API_OVH_APPLICATION_KEY'],
application_secret=os.environ['API_OVH_APPLICATION_SECRET'],
consumer_key=os.environ['API_OVH_CONSUMER_KEY'],
)
# Uncomment to get the OVH_DNS_RECORD_ID number (needs GET /domain/zone/"$OVH_DNS_DOMAIN"/record allowed in the API token)
#result = client.get('/domain/zone/'+os.environ['OVH_DNS_DOMAIN']+'/record',
# fieldType='TXT',
# subDomain='_dnslink.xkcd',
#)
#print(json.dumps(result, indent=4))
if client.get('/domain/zone/'+os.environ['OVH_DNS_DOMAIN']+'/record/'+os.environ['OVH_DNS_RECORD_ID'])['subDomain'] == '_dnslink.xkcd':
result = client.put('/domain/zone/'+os.environ['OVH_DNS_DOMAIN']+'/record/'+os.environ['OVH_DNS_RECORD_ID'],
subDomain='_dnslink.xkcd',
target='dnslink=/ipfs/' + os.environ['IPFS_HASH'],
ttl=60,
)
print(json.dumps(result, indent=4))
result = client.post('/domain/zone/'+os.environ['OVH_DNS_DOMAIN']+'/refresh')
print(json.dumps(result, indent=4))
else:
print('Wrong subdomain?')