[~] Refactor

This commit is contained in:
Siarhei Siniak 2022-09-03 15:17:04 +03:00
parent 783777ee58
commit 33b78ca231

@ -1,3 +1,7 @@
import multiprocessing
import time
import traceback
import datetime
import requests import requests
import logging import logging
import pprint import pprint
@ -6,52 +10,45 @@ import io
import json import json
import sys 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')
if dynu_config.get('enabled') != True:
logging.warning('disabled')
sys.exit(0)
t2 = requests.get( def update(
dynu_config,
):
t2 = requests.get(
'https://api.dynu.com/v2/oauth2/token', 'https://api.dynu.com/v2/oauth2/token',
auth=( auth=(
dynu_config['oath2_client_id'], dynu_config['oath2_client_id'],
dynu_config['oath2_secret'], dynu_config['oath2_secret'],
) )
).json() ).json()
logging.warning('got access_token') logging.warning('got access_token')
t1 = requests.get( t1 = requests.get(
'https://api.dynu.com/v2/dns', 'https://api.dynu.com/v2/dns',
headers={ headers={
'Authorization': 'Bearer %s' % t2['access_token'] 'Authorization': 'Bearer %s' % t2['access_token']
} }
).json() ).json()
DYNU_DOMAIN = t1['domains'][0] DYNU_DOMAIN = t1['domains'][0]
logging.warning('got dynu_domain') logging.warning('got dynu_domain')
t3 = requests.get( t3 = requests.get(
'https://api.dynu.com/v2/dns/%d/webredirect' % DYNU_DOMAIN['id'], 'https://api.dynu.com/v2/dns/%d/webredirect' % DYNU_DOMAIN['id'],
headers={ headers={
'Authorization': 'Bearer %s' % t2['access_token'] 'Authorization': 'Bearer %s' % t2['access_token']
} }
).json() ).json()
DYNU_REDIRECT = t3['webRedirects'][0] DYNU_REDIRECT = t3['webRedirects'][0]
logging.warning('got dynu_redirect') logging.warning('got dynu_redirect')
NGROK_DOMAIN = sys.argv[2] NGROK_DOMAIN = sys.argv[2]
t6 = requests.get('http://%s:4040/api/tunnels' % NGROK_DOMAIN).json() t6 = requests.get('http://%s:4040/api/tunnels' % NGROK_DOMAIN).json()
TUNNEL_URL = t6['tunnels'][0]['public_url'].replace('http://', 'https://') TUNNEL_URL = t6['tunnels'][0]['public_url'].replace('http://', 'https://')
logging.warning('got tunnel_url') logging.warning('got tunnel_url')
if TUNNEL_URL != DYNU_REDIRECT['url']: if TUNNEL_URL != DYNU_REDIRECT['url']:
t5 = copy.deepcopy(t3['webRedirects'][0]) t5 = copy.deepcopy(t3['webRedirects'][0])
t5.update( t5.update(
dict( dict(
@ -70,10 +67,10 @@ if TUNNEL_URL != DYNU_REDIRECT['url']:
json=t5 json=t5
).json() ).json()
logging.warning('updated dynu_redirect') logging.warning('updated dynu_redirect')
else: else:
logging.warning('skip update dynu_redirect') logging.warning('skip update dynu_redirect')
logging.warning( logging.warning(
pprint.pformat( pprint.pformat(
dict( dict(
NGROK_DOMAIN=NGROK_DOMAIN, NGROK_DOMAIN=NGROK_DOMAIN,
@ -82,6 +79,52 @@ logging.warning(
DYNU_REDIRECT=DYNU_REDIRECT, DYNU_REDIRECT=DYNU_REDIRECT,
) )
) )
) )
logging.warning('done dynu_update') logging.warning('done dynu_update')
def service():
logging.warning('start dynu_update')
need_wait = False
while True:
try:
if need_wait:
need_wait = False
time.sleep(900)
with io.open(
sys.argv[1],
'r'
) as f:
dynu_config = json.load(f)
if dynu_config.get('enabled') != True:
logging.warning('disabled')
continue
else:
logging.warning('loaded dynu_config')
with multiprocessing.Pool(processes=1) as pool:
while True:
pool.apply(
update,
args=(
dynu_config,
)
)
time.sleep(900)
except KeyboardInterrupt:
break
except:
logging.error('%s\n%s' % (
datetime.datetime.now(tz=datetime.timezone.utc),
traceback.format_exc().strip()
))
need_wait = True
if __name__ == '__main__':
service()