* [PATCH] Silently fall back to the guess the IP address with a remote server
@ 2015-08-12 0:06 Michael Tremer
2016-01-15 1:09 ` Michael Tremer
0 siblings, 1 reply; 2+ messages in thread
From: Michael Tremer @ 2015-08-12 0:06 UTC (permalink / raw)
To: ddns
[-- Attachment #1: Type: text/plain, Size: 2086 bytes --]
For most OSes we do not implement a way to read the current IP
address from the local configuration. In that case ddns used to
throw an exception and stop. This patch changes that in the way
that ddns will fall back to guess the IP address with help
of a remote server.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
---
src/ddns/system.py | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/ddns/system.py b/src/ddns/system.py
index 0d90ce6..c268ba5 100644
--- a/src/ddns/system.py
+++ b/src/ddns/system.py
@@ -66,6 +66,13 @@ class DDNSSystem(object):
return proxy
def get_local_ip_address(self, proto):
+ ip_address = self._get_local_ip_address(proto)
+
+ # Check if the IP address is usable and only return it then
+ if self._is_usable_ip_address(proto, ip_address):
+ return ip_address
+
+ def _get_local_ip_address(self, proto):
# Legacy code for IPFire 2.
if self.distro == "ipfire-2" and proto == "ipv4":
try:
@@ -281,16 +288,18 @@ class DDNSSystem(object):
guess_ip = self.core.settings.get("guess_external_ip", "true")
guess_ip = guess_ip in ("true", "yes", "1")
- # If the external IP address should be used, we just do that.
- if guess_ip:
- return self.guess_external_ip_address(proto)
-
# Get the local IP address.
- local_ip_address = self.get_local_ip_address(proto)
+ local_ip_address = None
+
+ if not guess_ip:
+ try:
+ local_ip_address = self.get_local_ip_address(proto)
+ except NotImplementedError:
+ logger.warning(_("Falling back to check the IP address with help of a public server"))
- # If the local IP address is not usable, we must guess
- # the correct IP address...
- if not self._is_usable_ip_address(proto, local_ip_address):
+ # If no local IP address could be determined, we will fall back to the guess
+ # it with help of an external server...
+ if not local_ip_address:
local_ip_address = self.guess_external_ip_address(proto)
return local_ip_address
--
2.4.3
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Re: [PATCH] Silently fall back to the guess the IP address with a remote server
2015-08-12 0:06 [PATCH] Silently fall back to the guess the IP address with a remote server Michael Tremer
@ 2016-01-15 1:09 ` Michael Tremer
0 siblings, 0 replies; 2+ messages in thread
From: Michael Tremer @ 2016-01-15 1:09 UTC (permalink / raw)
To: ddns
[-- Attachment #1: Type: text/plain, Size: 59 bytes --]
Whats the reason for this not being merged, yet?
-Michael
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-01-15 1:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-12 0:06 [PATCH] Silently fall back to the guess the IP address with a remote server Michael Tremer
2016-01-15 1:09 ` Michael Tremer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox