Blob Blame History Raw
From 464add2ad05781e72e54d05cc06150c21e1c282d Mon Sep 17 00:00:00 2001
From: Eric Garver <eric@garver.life>
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