diff src/plugins/plugin_misc_ip.py @ 1576:d5f59ba166fe

plugins IP: getLocalIPs now return localhost IP instead of an empty list if no non-localhost ip can be found
author Goffi <goffi@goffi.org>
date Wed, 11 Nov 2015 18:19:49 +0100
parents ec3848916ee8
children a9e86f660653
line wrap: on
line diff
--- a/src/plugins/plugin_misc_ip.py	Wed Nov 11 18:19:49 2015 +0100
+++ b/src/plugins/plugin_misc_ip.py	Wed Nov 11 18:19:49 2015 +0100
@@ -187,14 +187,15 @@
 
         @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 @@
                     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 @@
             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)