plugins IP: getLocalIPs now return localhost IP instead of an empty list if no non-localhost ip can be found

This commit is contained in:
Goffi 2015-11-11 18:19:49 +01:00
commit 9911d60449

View file

@ -187,14 +187,15 @@ class IPPlugin(object):
@param profile): %(doc_profile)s
@return (deferred): list of lan IP addresses
or empty list if it can't be discovered
if there are several addresses, the one used with the server is put first
if no address is found, localhost IP will be in the list
"""
# TODO: manage permission requesting (e.g. for UMTS link)
if self._local_ip_cache is not None:
defer.returnValue(self._local_ip_cache)
client = self.host.getClient(profile)
addresses = []
localhost = ['127.0.0.1']
# we first try our luck with netifaces
if netifaces is not None:
@ -210,13 +211,13 @@ class IPPlugin(object):
if self._filterAddresse(addresse):
addresses.append(addresse)
# we first try with our connection to server
# then we use our connection to server
ip = client.xmlstream.transport.getHost().host
if self._filterAddresse(ip):
self._insertFirst(addresses, ip)
defer.returnValue(addresses)
# if not available, we try with NAT-Port
# if server is local, we try with NAT-Port
if self._nat is not None:
nat_ip = yield self._nat.getIP(local=True)
if nat_ip is not None:
@ -226,17 +227,17 @@ class IPPlugin(object):
if addresses:
defer.returnValue(addresses)
# still not luck, we need to contact external website
allow_get_ip = yield self._externalAllowed(profile)
# still not luck, we need to contact external website
allow_get_ip = yield self._externalAllowed(profile)
if not allow_get_ip:
defer.returnValue(addresses)
if not allow_get_ip:
defer.returnValue(addresses or localhost)
try:
ip_tuple = yield self._getIPFromExternal(GET_IP_PAGE)
except (internet_error.DNSLookupError, internet_error.TimeoutError):
log.warning(u"Can't access Domain Name System")
defer.returnValue(addresses)
defer.returnValue(addresses or localhost)
self._insertFirst(addresses, ip_tuple.local)
defer.returnValue(addresses)