From 0a6a3a7715932b7fbb129b7fc62a4a8bf2a012d1 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Thu, 30 Mar 2023 15:13:24 +0200 Subject: [PATCH] Services/Unbound - choose a delimiter (|) and translate empty values to empty strings. should fix https://github.com/opnsense/core/issues/6456 Although I couldn't reproduce the exact same issue, if some values are empty ('') and some are null (None), weird things might happen. This commit makes sure there is a field delimiter, which logically shouldn't exist in the datastream itself and prevent null values being presented as "None". --- src/opnsense/scripts/unbound/logger.py | 2 +- .../service/templates/OPNsense/Unbound/core/dnsbl_module.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/opnsense/scripts/unbound/logger.py b/src/opnsense/scripts/unbound/logger.py index 431f7601a..e7b3ebe6c 100755 --- a/src/opnsense/scripts/unbound/logger.py +++ b/src/opnsense/scripts/unbound/logger.py @@ -136,7 +136,7 @@ class DNSReader: if r == '': return False - q = tuple(r.strip("\n").split()) + q = tuple(r.strip("\n").split('|')) self.buffer.append(q) self.update_clients.add(q[2]) diff --git a/src/opnsense/service/templates/OPNsense/Unbound/core/dnsbl_module.py b/src/opnsense/service/templates/OPNsense/Unbound/core/dnsbl_module.py index b634d27be..8463dde83 100644 --- a/src/opnsense/service/templates/OPNsense/Unbound/core/dnsbl_module.py +++ b/src/opnsense/service/templates/OPNsense/Unbound/core/dnsbl_module.py @@ -222,7 +222,7 @@ class Logger: try: while len(self._pipe_buffer) > 0: l = self._pipe_buffer.popleft() - res = "{} {} {} {} {} {} {} {} {} {} {} {} {}\n".format(*l) + res = "{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}\n".format(*['' if x is None else x for x in l]) os.write(self._pipe_fd, res.encode()) except (BrokenPipeError, BlockingIOError) as e: if e.__class__.__name__ == 'BrokenPipeError':