mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Make dyndns update more resilient to ns0.yunohost.org being down
This commit is contained in:
parent
1e7c3ffc21
commit
7dad37ed04
1 changed files with 25 additions and 3 deletions
|
@ -34,7 +34,7 @@ from moulinette import m18n
|
||||||
from moulinette.core import MoulinetteError
|
from moulinette.core import MoulinetteError
|
||||||
from moulinette.utils.log import getActionLogger
|
from moulinette.utils.log import getActionLogger
|
||||||
from moulinette.utils.filesystem import write_to_file, read_file
|
from moulinette.utils.filesystem import write_to_file, read_file
|
||||||
from moulinette.utils.network import download_json
|
from moulinette.utils.network import download_json, dig
|
||||||
from moulinette.utils.process import check_output
|
from moulinette.utils.process import check_output
|
||||||
|
|
||||||
from yunohost.utils.error import YunohostError
|
from yunohost.utils.error import YunohostError
|
||||||
|
@ -216,8 +216,30 @@ def dyndns_update(operation_logger, dyn_host="dyndns.yunohost.org", domain=None,
|
||||||
'zone %s' % host,
|
'zone %s' % host,
|
||||||
]
|
]
|
||||||
|
|
||||||
old_ipv4 = check_output("dig @%s +short %s" % (dyn_host, domain)) or None
|
|
||||||
old_ipv6 = check_output("dig @%s +short aaaa %s" % (dyn_host, domain)) or None
|
def resolve_domain(domain, rdtype):
|
||||||
|
|
||||||
|
ok, result = dig(domain, rdtype, resolvers=[dyn_host])
|
||||||
|
if ok == "ok":
|
||||||
|
return result[0] if len(result) else None
|
||||||
|
elif result[0] == "Timeout":
|
||||||
|
logger.debug("Timed-out while trying to resolve %s record for %s using %s" % (rdtype, domain, dyn_host))
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
logger.debug("Falling back to external resolvers")
|
||||||
|
ok, result = dig(domain, rdtype, resolvers="force_external")
|
||||||
|
if ok == "ok":
|
||||||
|
return result[0] if len(result) else None
|
||||||
|
elif result[0] == "Timeout":
|
||||||
|
logger.debug("Timed-out while trying to resolve %s record for %s using external resolvers : %s" % (rdtype, domain, result))
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
raise YunohostError("Failed to resolve %s for %s" % (rdtype, domain), raw_msg=True)
|
||||||
|
|
||||||
|
old_ipv4 = resolve_domain(domain, "A")
|
||||||
|
old_ipv6 = resolve_domain(domain, "AAAA")
|
||||||
|
|
||||||
# Get current IPv4 and IPv6
|
# Get current IPv4 and IPv6
|
||||||
ipv4_ = get_public_ip()
|
ipv4_ = get_public_ip()
|
||||||
|
|
Loading…
Add table
Reference in a new issue