mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Improve default IPv6 route check to cover stuff happening on internet cube
This commit is contained in:
parent
fd47e45df3
commit
822c731086
1 changed files with 7 additions and 1 deletions
|
@ -58,7 +58,13 @@ def get_public_ip_from_remote_server(protocol=4):
|
||||||
|
|
||||||
# If we are indeed connected in ipv4 or ipv6, we should find a default route
|
# If we are indeed connected in ipv4 or ipv6, we should find a default route
|
||||||
routes = check_output("ip -%s route" % protocol).split("\n")
|
routes = check_output("ip -%s route" % protocol).split("\n")
|
||||||
if not any(r.startswith("default") for r in routes):
|
def is_default_route(r):
|
||||||
|
# Typically the default route starts with "default"
|
||||||
|
# But of course IPv6 is more complex ... e.g. on internet cube there's
|
||||||
|
# no default route but a /3 which acts as a default-like route...
|
||||||
|
# e.g. 2000:/3 dev tun0 ...
|
||||||
|
return r.startswith("default") or (":" in r and re.match(r".*/[0-3]$", r.split()[0]))
|
||||||
|
if not any(is_default_route(r) for r in routes):
|
||||||
logger.debug("No default route for IPv%s, so assuming there's no IP address for that version" % protocol)
|
logger.debug("No default route for IPv%s, so assuming there's no IP address for that version" % protocol)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue