[~] Refactor
This commit is contained in:
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,82 +10,121 @@ 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(
|
||||||
'https://api.dynu.com/v2/oauth2/token',
|
dynu_config,
|
||||||
auth=(
|
):
|
||||||
dynu_config['oath2_client_id'],
|
t2 = requests.get(
|
||||||
dynu_config['oath2_secret'],
|
'https://api.dynu.com/v2/oauth2/token',
|
||||||
)
|
auth=(
|
||||||
).json()
|
dynu_config['oath2_client_id'],
|
||||||
logging.warning('got access_token')
|
dynu_config['oath2_secret'],
|
||||||
|
|
||||||
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'].replace('http://', 'https://')
|
|
||||||
logging.warning('got tunnel_url')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if TUNNEL_URL != DYNU_REDIRECT['url']:
|
|
||||||
t5 = copy.deepcopy(t3['webRedirects'][0])
|
|
||||||
t5.update(
|
|
||||||
dict(
|
|
||||||
url=TUNNEL_URL,
|
|
||||||
)
|
)
|
||||||
)
|
).json()
|
||||||
|
logging.warning('got access_token')
|
||||||
|
|
||||||
DYNU_REDIRECT = requests.post(
|
t1 = requests.get(
|
||||||
'https://api.dynu.com/v2/dns/%d/webRedirect/%d' % (
|
'https://api.dynu.com/v2/dns',
|
||||||
DYNU_DOMAIN['id'],
|
|
||||||
t3['webRedirects'][0]['id']
|
|
||||||
),
|
|
||||||
headers={
|
headers={
|
||||||
'Authorization': 'Bearer %s' % t2['access_token']
|
'Authorization': 'Bearer %s' % t2['access_token']
|
||||||
},
|
}
|
||||||
json=t5
|
|
||||||
).json()
|
).json()
|
||||||
logging.warning('updated dynu_redirect')
|
DYNU_DOMAIN = t1['domains'][0]
|
||||||
else:
|
logging.warning('got dynu_domain')
|
||||||
logging.warning('skip update dynu_redirect')
|
|
||||||
|
|
||||||
logging.warning(
|
t3 = requests.get(
|
||||||
pprint.pformat(
|
'https://api.dynu.com/v2/dns/%d/webredirect' % DYNU_DOMAIN['id'],
|
||||||
dict(
|
headers={
|
||||||
NGROK_DOMAIN=NGROK_DOMAIN,
|
'Authorization': 'Bearer %s' % t2['access_token']
|
||||||
TUNNEL_URL=TUNNEL_URL,
|
}
|
||||||
DYNU_DOMAIN=DYNU_DOMAIN,
|
).json()
|
||||||
DYNU_REDIRECT=DYNU_REDIRECT,
|
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'].replace('http://', 'https://')
|
||||||
|
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')
|
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()
|
||||||
|
Loading…
Reference in New Issue
Block a user