From be0ef6b7b927c0fec9971e69e205d7c6f0fe089d Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Tue, 22 Aug 2023 09:47:59 +0200 Subject: [PATCH] dns/ddclient: stop trying to updat 'None' address Looks like the type check was off leading to update an empty address. Now instead check first and throw a warning. The condition might be transient but try to hint at the user that the setup is likely broken. --- .../opnsense/scripts/ddclient/lib/account/__init__.py | 10 ++++++++-- .../src/opnsense/scripts/ddclient/lib/poller.py | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/__init__.py b/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/__init__.py index e143cc28b..a5cb502ea 100755 --- a/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/__init__.py +++ b/dns/ddclient/src/opnsense/scripts/ddclient/lib/account/__init__.py @@ -23,6 +23,7 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ +import syslog import hashlib import uuid import time @@ -120,8 +121,13 @@ class BaseAccount: interface = self.settings['interface'] if self.settings.get('interface' ,'').strip() != '' else None ) - - if self._current_address != '' and ( + if self._current_address == None: + syslog.syslog( + syslog.LOG_WARNING, + "Account %s no global IP address detected, check config if warning persists" % (self.description) + ) + return False + elif ( self._state.get('ip') is None or self._current_address != self._state.get('ip') or self.state.get('md5') != self.md5 diff --git a/dns/ddclient/src/opnsense/scripts/ddclient/lib/poller.py b/dns/ddclient/src/opnsense/scripts/ddclient/lib/poller.py index 08bf5af47..d338ce569 100755 --- a/dns/ddclient/src/opnsense/scripts/ddclient/lib/poller.py +++ b/dns/ddclient/src/opnsense/scripts/ddclient/lib/poller.py @@ -145,13 +145,15 @@ class Poller: for acc in self._accounts.values(): if time.time() - acc.atime > self.poll_interval: if self.is_verbose: - syslog.syslog(syslog.LOG_NOTICE, "Account %s execute" % acc.description) + syslog.syslog(syslog.LOG_NOTICE, "Account %s executing" % acc.description) try: if acc.execute(): if self.is_verbose: - syslog.syslog(syslog.LOG_NOTICE, "Account %s changed" % acc.description) + syslog.syslog(syslog.LOG_NOTICE, "Account %s updated" % acc.description) needs_flush = True else: + if self.is_verbose: + syslog.syslog(syslog.LOG_NOTICE, "Account %s not modified" % acc.description) # update last accessed timestamp acc.update_state(None) except Exception as e: