From 464add2ad05781e72e54d05cc06150c21e1c282d Mon Sep 17 00:00:00 2001 From: Eric Garver Date: Mon, 1 Jul 2019 10:27:51 -0400 Subject: [PATCH 11/20] fix: dbus: add missing APIs for service includes Fixes: 1fc208bf9317 ("feat: service includes") (cherry picked from commit bcdc1e2bf1e71c32606fdaadabd9a913e2e1d651) --- src/firewall/server/config_service.py | 61 +++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/firewall/server/config_service.py b/src/firewall/server/config_service.py index 47530d319bdb..05ded1c78da7 100644 --- a/src/firewall/server/config_service.py +++ b/src/firewall/server/config_service.py @@ -652,3 +652,64 @@ class FirewallDConfigService(slip.dbus.service.Object): settings = self.getSettings() return (family in settings[5] and address == settings[5][family]) + + # includes + + @dbus_service_method(config.dbus.DBUS_INTERFACE_CONFIG_SERVICE, + out_signature='as') + @dbus_handle_exceptions + def getIncludes(self, sender=None): + log.debug1("%s.getIncludes()", self._log_prefix) + self.parent.accessCheck(sender) + settings = list(self.config.get_service_config(self.obj)) + return settings[8] + + @dbus_service_method(config.dbus.DBUS_INTERFACE_CONFIG_SERVICE, + in_signature='as') + @dbus_handle_exceptions + def setIncludes(self, includes, sender=None): + includes = dbus_to_python(includes, list) + log.debug1("%s.setIncludes('%s')", self._log_prefix, includes) + self.parent.accessCheck(sender) + settings = list(self.config.get_service_config(self.obj)) + settings[8] = includes[:] + self.config.set_service_config(self.obj, tuple(settings)) + self.Updated(self.obj.name) + + @dbus_service_method(config.dbus.DBUS_INTERFACE_CONFIG_SERVICE, + in_signature='s') + @dbus_handle_exceptions + def addInclude(self, include, sender=None): + include = dbus_to_python(include, str) + log.debug1("%s.addInclude('%s')", self._log_prefix, include) + self.parent.accessCheck(sender) + settings = list(self.config.get_service_config(self.obj)) + settings[8].append(include) + self.config.set_service_config(self.obj, tuple(settings)) + self.Updated(self.obj.name) + + @dbus_service_method(config.dbus.DBUS_INTERFACE_CONFIG_SERVICE, + in_signature='s') + @dbus_handle_exceptions + def removeInclude(self, include, sender=None): + include = dbus_to_python(include, str) + log.debug1("%s.removeInclude('%s')", self._log_prefix, include) + self.parent.accessCheck(sender) + settings = list(self.config.get_service_config(self.obj)) + settings[8].remove(include) + self.config.set_service_config(self.obj, tuple(settings)) + self.Updated(self.obj.name) + + @dbus_service_method(config.dbus.DBUS_INTERFACE_CONFIG_SERVICE, + in_signature='s', out_signature='b') + @dbus_handle_exceptions + def queryInclude(self, include, sender=None): + include = dbus_to_python(include, str) + log.debug1("%s.queryInclude('%s')", self._log_prefix, include) + settings = list(self.config.get_service_config(self.obj)) + try: + settings[8].index(include) + except ValueError: + return False + else: + return True -- 2.20.1