import requests import logging import pprint import copy import io import json import sys logging.warning('start dynu_update') with io.open( sys.argv[1], 'r' ) as f: dynu_config = json.load(f) logging.warning('loaded dynu_config') t2 = requests.get( 'https://api.dynu.com/v2/oauth2/token', auth=( dynu_config['oath2_client_id'], dynu_config['oath2_secret'], ) ).json() logging.warning('got access_token') t1 = requests.get( 'https://api.dynu.com/v2/dns', headers={ 'Authorization': 'Bearer %s' % t2['access_token'] } ).json() DYNU_DOMAIN = t1['domains'][0] logging.warning('got dynu_domain') t3 = requests.get( 'https://api.dynu.com/v2/dns/%d/webredirect' % DYNU_DOMAIN['id'], headers={ 'Authorization': 'Bearer %s' % t2['access_token'] } ).json() DYNU_REDIRECT = t3['webRedirects'][0] logging.warning('got dynu_redirect') NGROK_DOMAIN = sys.argv[2] t6 = requests.get('http://%s:4040/api/tunnels' % NGROK_DOMAIN).json() TUNNEL_URL = t6['tunnels'][0]['public_url'] logging.warning('got tunnel_url') if TUNNEL_URL != DYNU_REDIRECT['url']: t5 = copy.deepcopy(t3['webRedirects'][0]) t5.update( dict( url=TUNNEL_URL, ) ) DYNU_REDIRECT = requests.post( 'https://api.dynu.com/v2/dns/%d/webRedirect/%d' % ( DYNU_DOMAIN['id'], t3['webRedirects'][0]['id'] ), headers={ 'Authorization': 'Bearer %s' % t2['access_token'] }, json=t5 ).json() logging.warning('updated dynu_redirect') else: logging.warning('skip update dynu_redirect') logging.warning( pprint.pformat( dict( NGROK_DOMAIN=NGROK_DOMAIN, TUNNEL_URL=TUNNEL_URL, DYNU_DOMAIN=DYNU_DOMAIN, DYNU_REDIRECT=DYNU_REDIRECT, ) ) ) logging.warning('done dynu_update')