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:
parent
674001781f
commit
9911d60449
1 changed files with 25 additions and 27 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue