Blame SOURCES/firewalld-0.4.4.5-D-Bus-interfaces-Fix-GetAll-for-interfaces-without-p-rhbz#1452017.patch

64e4ee
From bc6ba9d59f8070b0e76f127f16ef1cd99da90ffc Mon Sep 17 00:00:00 2001
64e4ee
From: Thomas Woerner <twoerner@redhat.com>
64e4ee
Date: Fri, 19 May 2017 15:35:54 +0200
64e4ee
Subject: [PATCH 5/6] D-Bus interfaces: Fix GetAll for interfaces without
64e4ee
 properties (RHBZ#1452017)
64e4ee
64e4ee
Also: Make D-Bus error messages consistent in all interfaces.
64e4ee
(cherry picked from commit fb44764d1275958401e2e69161d997bfb6e02899)
64e4ee
---
64e4ee
 src/firewall/server/config.py          | 115 +++++++++++++++++++--------------
64e4ee
 src/firewall/server/config_helper.py   |  15 ++---
64e4ee
 src/firewall/server/config_icmptype.py |  15 ++---
64e4ee
 src/firewall/server/config_ipset.py    |  15 ++---
64e4ee
 src/firewall/server/config_service.py  |  15 ++---
64e4ee
 src/firewall/server/config_zone.py     |  15 ++---
64e4ee
 src/firewall/server/firewalld.py       |  71 ++++++++++++++------
64e4ee
 7 files changed, 152 insertions(+), 109 deletions(-)
64e4ee
64e4ee
diff --git a/src/firewall/server/config.py b/src/firewall/server/config.py
64e4ee
index 55bfffbebe76..33f72027d048 100644
64e4ee
--- a/src/firewall/server/config.py
64e4ee
+++ b/src/firewall/server/config.py
64e4ee
@@ -486,8 +486,8 @@ class FirewallDConfig(slip.dbus.service.Object):
64e4ee
                          "Lockdown", "IPv6_rpfilter", "IndividualCalls",
64e4ee
                          "LogDenied", "AutomaticHelpers" ]:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % prop)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % prop)
64e4ee
 
64e4ee
         value = self.config.get_firewalld_conf().get(prop)
64e4ee
 
64e4ee
@@ -546,8 +546,8 @@ class FirewallDConfig(slip.dbus.service.Object):
64e4ee
             return dbus.String(self._get_property(prop))
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % prop)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % prop)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -558,10 +558,17 @@ class FirewallDConfig(slip.dbus.service.Object):
64e4ee
         property_name = dbus_to_python(property_name, str)
64e4ee
         log.debug1("config.Get('%s', '%s')", interface_name, property_name)
64e4ee
 
64e4ee
-        if interface_name != config.dbus.DBUS_INTERFACE_CONFIG:
64e4ee
+        if interface_name == config.dbus.DBUS_INTERFACE_CONFIG:
64e4ee
+            return self._get_dbus_property(property_name)
64e4ee
+        elif interface_name in [ config.dbus.DBUS_INTERFACE_CONFIG_DIRECT,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_CONFIG_POLICIES ]:
64e4ee
+            raise dbus.exceptions.DBusException(
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
+        else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         return self._get_dbus_property(property_name)
64e4ee
 
64e4ee
@@ -572,16 +579,20 @@ class FirewallDConfig(slip.dbus.service.Object):
64e4ee
         interface_name = dbus_to_python(interface_name, str)
64e4ee
         log.debug1("config.GetAll('%s')", interface_name)
64e4ee
 
64e4ee
-        if interface_name != config.dbus.DBUS_INTERFACE_CONFIG:
64e4ee
+        ret = { }
64e4ee
+        if interface_name == config.dbus.DBUS_INTERFACE_CONFIG:
64e4ee
+            for x in [ "DefaultZone", "MinimalMark", "CleanupOnExit",
64e4ee
+                       "Lockdown", "IPv6_rpfilter", "IndividualCalls",
64e4ee
+                       "LogDenied", "AutomaticHelpers" ]:
64e4ee
+                ret[x] = self._get_property(x)
64e4ee
+        elif interface_name in [ config.dbus.DBUS_INTERFACE_CONFIG_DIRECT,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_CONFIG_POLICIES ]:
64e4ee
+            pass
64e4ee
+        else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
-        ret = { }
64e4ee
-        for x in [ "DefaultZone", "MinimalMark", "CleanupOnExit", "Lockdown",
64e4ee
-                   "IPv6_rpfilter", "IndividualCalls", "LogDenied",
64e4ee
-                   "AutomaticHelpers" ]:
64e4ee
-            ret[x] = self._get_property(x)
64e4ee
         return dbus.Dictionary(ret, signature="sv")
64e4ee
 
64e4ee
     @slip.dbus.polkit.require_auth(config.dbus.PK_ACTION_CONFIG)
64e4ee
@@ -595,49 +606,55 @@ class FirewallDConfig(slip.dbus.service.Object):
64e4ee
                    property_name, new_value)
64e4ee
         self.accessCheck(sender)
64e4ee
 
64e4ee
-        if interface_name != config.dbus.DBUS_INTERFACE_CONFIG:
64e4ee
-            raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
-
64e4ee
-        if property_name in [ "MinimalMark", "CleanupOnExit", "Lockdown",
64e4ee
-                              "IPv6_rpfilter", "IndividualCalls", "LogDenied",
64e4ee
-                              "AutomaticHelpers" ]:
64e4ee
-            if property_name == "MinimalMark":
64e4ee
+        if interface_name == config.dbus.DBUS_INTERFACE_CONFIG:
64e4ee
+            if property_name in [ "MinimalMark", "CleanupOnExit", "Lockdown",
64e4ee
+                                  "IPv6_rpfilter", "IndividualCalls",
64e4ee
+                                  "LogDenied", "AutomaticHelpers" ]:
64e4ee
+                if property_name == "MinimalMark":
64e4ee
+                    try:
64e4ee
+                        int(new_value)
64e4ee
+                    except ValueError:
64e4ee
+                        raise FirewallError(errors.INVALID_MARK, new_value)
64e4ee
                 try:
64e4ee
-                    int(new_value)
64e4ee
-                except ValueError:
64e4ee
-                    raise FirewallError(errors.INVALID_MARK, new_value)
64e4ee
-            try:
64e4ee
-                new_value = str(new_value)
64e4ee
-            except:
64e4ee
-                raise FirewallError(errors.INVALID_VALUE, "'%s' for %s" % \
64e4ee
+                    new_value = str(new_value)
64e4ee
+                except:
64e4ee
+                    raise FirewallError(errors.INVALID_VALUE,
64e4ee
+                                        "'%s' for %s" % \
64e4ee
+                                        (new_value, property_name))
64e4ee
+                if property_name in [ "CleanupOnExit", "Lockdown",
64e4ee
+                                      "IPv6_rpfilter", "IndividualCalls" ]:
64e4ee
+                    if new_value.lower() not in [ "yes", "no",
64e4ee
+                                                  "true", "false" ]:
64e4ee
+                        raise FirewallError(errors.INVALID_VALUE,
64e4ee
+                                            "'%s' for %s" % \
64e4ee
                                             (new_value, property_name))
64e4ee
-            if property_name in [ "CleanupOnExit", "Lockdown",
64e4ee
-                                  "IPv6_rpfilter", "IndividualCalls" ]:
64e4ee
-                if new_value.lower() not in [ "yes", "no", "true", "false" ]:
64e4ee
-                    raise FirewallError(errors.INVALID_VALUE, "'%s' for %s" % \
64e4ee
+                if property_name == "LogDenied":
64e4ee
+                    if new_value not in config.LOG_DENIED_VALUES:
64e4ee
+                        raise FirewallError(errors.INVALID_VALUE,
64e4ee
+                                            "'%s' for %s" % \
64e4ee
                                             (new_value, property_name))
64e4ee
-            if property_name == "LogDenied":
64e4ee
-                if new_value not in config.LOG_DENIED_VALUES:
64e4ee
-                    raise FirewallError(errors.INVALID_VALUE, "'%s' for %s" % \
64e4ee
+                if property_name == "AutomaticHelpers":
64e4ee
+                    if new_value not in config.AUTOMATIC_HELPERS_VALUES:
64e4ee
+                        raise FirewallError(errors.INVALID_VALUE,
64e4ee
+                                            "'%s' for %s" % \
64e4ee
                                             (new_value, property_name))
64e4ee
-            if property_name == "AutomaticHelpers":
64e4ee
-                if new_value not in config.AUTOMATIC_HELPERS_VALUES:
64e4ee
-                    raise FirewallError(errors.INVALID_VALUE, "'%s' for %s" % \
64e4ee
-                                            (new_value, property_name))
64e4ee
-            self.config.get_firewalld_conf().set(property_name, new_value)
64e4ee
-            self.config.get_firewalld_conf().write()
64e4ee
-            self.PropertiesChanged(interface_name,
64e4ee
-                                   { property_name: new_value }, [ ])
64e4ee
-        elif property_name in [ "DefaultZone" ]:
64e4ee
+                self.config.get_firewalld_conf().set(property_name, new_value)
64e4ee
+                self.config.get_firewalld_conf().write()
64e4ee
+                self.PropertiesChanged(interface_name,
64e4ee
+                                       { property_name: new_value }, [ ])
64e4ee
+            else:
64e4ee
+                raise dbus.exceptions.DBusException(
64e4ee
+                    "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                    "Property '%s' does not exist" % property_name)
64e4ee
+        elif interface_name in [ config.dbus.DBUS_INTERFACE_CONFIG_DIRECT,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_CONFIG_POLICIES ]:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
-                "Property '%s' is read-only" % property_name)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' does not exist" % property_name)
64e4ee
+                "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
diff --git a/src/firewall/server/config_helper.py b/src/firewall/server/config_helper.py
64e4ee
index e3683e9b7788..23e30e04ba26 100644
64e4ee
--- a/src/firewall/server/config_helper.py
64e4ee
+++ b/src/firewall/server/config_helper.py
64e4ee
@@ -92,9 +92,8 @@ class FirewallDConfigHelper(slip.dbus.service.Object):
64e4ee
             return dbus.Boolean(self.obj.builtin)
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % \
64e4ee
-                property_name)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -109,7 +108,7 @@ class FirewallDConfigHelper(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_HELPER:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         return self._get_property(property_name)
64e4ee
 
64e4ee
@@ -123,7 +122,7 @@ class FirewallDConfigHelper(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_HELPER:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         ret = { }
64e4ee
         for x in [ "name", "filename", "path", "default", "builtin" ]:
64e4ee
@@ -144,11 +143,11 @@ class FirewallDConfigHelper(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_HELPER:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         raise dbus.exceptions.DBusException(
64e4ee
-            "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-            "Property '%s' is not settable" % property_name)
64e4ee
+            "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
+            "Property '%s' is read-only" % property_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
diff --git a/src/firewall/server/config_icmptype.py b/src/firewall/server/config_icmptype.py
64e4ee
index 9f571ae98128..e1724550d740 100644
64e4ee
--- a/src/firewall/server/config_icmptype.py
64e4ee
+++ b/src/firewall/server/config_icmptype.py
64e4ee
@@ -92,9 +92,8 @@ class FirewallDConfigIcmpType(slip.dbus.service.Object):
64e4ee
             return dbus.Boolean(self.obj.builtin)
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % \
64e4ee
-                property_name)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -109,7 +108,7 @@ class FirewallDConfigIcmpType(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_ICMPTYPE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         return self._get_property(property_name)
64e4ee
 
64e4ee
@@ -123,7 +122,7 @@ class FirewallDConfigIcmpType(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_ICMPTYPE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         ret = { }
64e4ee
         for x in [ "name", "filename", "path", "default", "builtin" ]:
64e4ee
@@ -144,11 +143,11 @@ class FirewallDConfigIcmpType(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_ICMPTYPE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         raise dbus.exceptions.DBusException(
64e4ee
-            "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-            "Property '%s' is not settable" % property_name)
64e4ee
+            "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
+            "Property '%s' is read-only" % property_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
diff --git a/src/firewall/server/config_ipset.py b/src/firewall/server/config_ipset.py
64e4ee
index a1613c6933ab..8c647bc29ab9 100644
64e4ee
--- a/src/firewall/server/config_ipset.py
64e4ee
+++ b/src/firewall/server/config_ipset.py
64e4ee
@@ -93,9 +93,8 @@ class FirewallDConfigIPSet(slip.dbus.service.Object):
64e4ee
             return dbus.Boolean(self.obj.builtin)
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % \
64e4ee
-                property_name)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -110,7 +109,7 @@ class FirewallDConfigIPSet(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_IPSET:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         return self._get_property(property_name)
64e4ee
 
64e4ee
@@ -124,7 +123,7 @@ class FirewallDConfigIPSet(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_IPSET:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         ret = { }
64e4ee
         for x in [ "name", "filename", "path", "default", "builtin" ]:
64e4ee
@@ -145,11 +144,11 @@ class FirewallDConfigIPSet(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_IPSET:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         raise dbus.exceptions.DBusException(
64e4ee
-            "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-            "Property '%s' is not settable" % property_name)
64e4ee
+            "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
+            "Property '%s' is read-only" % property_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
diff --git a/src/firewall/server/config_service.py b/src/firewall/server/config_service.py
64e4ee
index 6745e253f88a..47530d319bdb 100644
64e4ee
--- a/src/firewall/server/config_service.py
64e4ee
+++ b/src/firewall/server/config_service.py
64e4ee
@@ -92,9 +92,8 @@ class FirewallDConfigService(slip.dbus.service.Object):
64e4ee
             return dbus.Boolean(self.obj.builtin)
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % \
64e4ee
-                property_name)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -109,7 +108,7 @@ class FirewallDConfigService(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_SERVICE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         return self._get_property(property_name)
64e4ee
 
64e4ee
@@ -123,7 +122,7 @@ class FirewallDConfigService(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_SERVICE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         ret = { }
64e4ee
         for x in [ "name", "filename", "path", "default", "builtin" ]:
64e4ee
@@ -144,11 +143,11 @@ class FirewallDConfigService(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_SERVICE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         raise dbus.exceptions.DBusException(
64e4ee
-            "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-            "Property '%s' is not settable" % property_name)
64e4ee
+            "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
+            "Property '%s' is read-only" % property_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
diff --git a/src/firewall/server/config_zone.py b/src/firewall/server/config_zone.py
64e4ee
index 42ec963549d8..f98f700bec59 100644
64e4ee
--- a/src/firewall/server/config_zone.py
64e4ee
+++ b/src/firewall/server/config_zone.py
64e4ee
@@ -94,9 +94,8 @@ class FirewallDConfigZone(slip.dbus.service.Object):
64e4ee
             return dbus.Boolean(self.obj.builtin)
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % \
64e4ee
-                property_name)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -111,7 +110,7 @@ class FirewallDConfigZone(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_ZONE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         return self._get_property(property_name)
64e4ee
 
64e4ee
@@ -125,7 +124,7 @@ class FirewallDConfigZone(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_ZONE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         ret = { }
64e4ee
         for x in [ "name", "filename", "path", "default", "builtin" ]:
64e4ee
@@ -146,11 +145,11 @@ class FirewallDConfigZone(slip.dbus.service.Object):
64e4ee
         if interface_name != config.dbus.DBUS_INTERFACE_CONFIG_ZONE:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
         raise dbus.exceptions.DBusException(
64e4ee
-            "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-            "Property '%s' is not settable" % property_name)
64e4ee
+            "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
+            "Property '%s' is read-only" % property_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
diff --git a/src/firewall/server/firewalld.py b/src/firewall/server/firewalld.py
64e4ee
index 2f1f8234ab9c..8c4bd4f0c66a 100644
64e4ee
--- a/src/firewall/server/firewalld.py
64e4ee
+++ b/src/firewall/server/firewalld.py
64e4ee
@@ -184,8 +184,8 @@ class FirewallD(slip.dbus.service.Object):
64e4ee
 
64e4ee
         else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
-                "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-                "Property '%s' isn't exported (or may not exist)" % prop)
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % prop)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='ss',
64e4ee
                          out_signature='v')
64e4ee
@@ -196,12 +196,19 @@ class FirewallD(slip.dbus.service.Object):
64e4ee
         property_name = dbus_to_python(property_name, str)
64e4ee
         log.debug1("Get('%s', '%s')", interface_name, property_name)
64e4ee
 
64e4ee
-        if interface_name != config.dbus.DBUS_INTERFACE:
64e4ee
+        if interface_name == config.dbus.DBUS_INTERFACE:
64e4ee
+            return self._get_property(property_name)
64e4ee
+        elif interface_name in [ config.dbus.DBUS_INTERFACE_ZONE,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_DIRECT,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_POLICIES,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_IPSET ]:
64e4ee
+            raise dbus.exceptions.DBusException(
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
+        else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
-
64e4ee
-        return self._get_property(property_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
     @dbus_service_method(dbus.PROPERTIES_IFACE, in_signature='s',
64e4ee
                          out_signature='a{sv}')
64e4ee
@@ -210,17 +217,24 @@ class FirewallD(slip.dbus.service.Object):
64e4ee
         interface_name = dbus_to_python(interface_name, str)
64e4ee
         log.debug1("GetAll('%s')", interface_name)
64e4ee
 
64e4ee
-        if interface_name != config.dbus.DBUS_INTERFACE:
64e4ee
+        ret = { }
64e4ee
+        if interface_name == config.dbus.DBUS_INTERFACE:
64e4ee
+            for x in [ "version", "interface_version", "state",
64e4ee
+                       "IPv4", "IPv6", "IPv6_rpfilter", "BRIDGE",
64e4ee
+                       "IPSet", "IPSetTypes", "nf_conntrack_helper_setting",
64e4ee
+                       "nf_conntrack_helpers", "IPv4ICMPTypes",
64e4ee
+                       "IPv6ICMPTypes" ]:
64e4ee
+                ret[x] = self._get_property(x)
64e4ee
+        elif interface_name in [ config.dbus.DBUS_INTERFACE_ZONE,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_DIRECT,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_POLICIES,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_IPSET ]:
64e4ee
+            pass
64e4ee
+        else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
-        ret = { }
64e4ee
-        for x in [ "version", "interface_version", "state",
64e4ee
-                   "IPv4", "IPv6", "IPv6_rpfilter", "BRIDGE",
64e4ee
-                   "IPSet", "IPSetTypes", "nf_conntrack_helper_setting",
64e4ee
-                   "nf_conntrack_helpers", "IPv4ICMPTypes", "IPv6ICMPTypes" ]:
64e4ee
-            ret[x] = self._get_property(x)
64e4ee
         return dbus.Dictionary(ret, signature="sv")
64e4ee
 
64e4ee
     @slip.dbus.polkit.require_auth(config.dbus.PK_ACTION_CONFIG)
64e4ee
@@ -234,14 +248,31 @@ class FirewallD(slip.dbus.service.Object):
64e4ee
                    new_value)
64e4ee
         self.accessCheck(sender)
64e4ee
 
64e4ee
-        if interface_name != config.dbus.DBUS_INTERFACE:
64e4ee
+        if interface_name == config.dbus.DBUS_INTERFACE:
64e4ee
+            if property_name in [ "version", "interface_version", "state",
64e4ee
+                                  "IPv4", "IPv6", "IPv6_rpfilter", "BRIDGE",
64e4ee
+                                  "IPSet", "IPSetTypes",
64e4ee
+                                  "nf_conntrack_helper_setting",
64e4ee
+                                  "nf_conntrack_helpers", "IPv4ICMPTypes",
64e4ee
+                                  "IPv6ICMPTypes" ]:
64e4ee
+                raise dbus.exceptions.DBusException(
64e4ee
+                    "org.freedesktop.DBus.Error.PropertyReadOnly: "
64e4ee
+                    "Property '%s' is read-only" % property_name)
64e4ee
+            else:
64e4ee
+                raise dbus.exceptions.DBusException(
64e4ee
+                    "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                    "Property '%s' does not exist" % property_name)
64e4ee
+        elif interface_name in [ config.dbus.DBUS_INTERFACE_ZONE,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_DIRECT,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_POLICIES,
64e4ee
+                                 config.dbus.DBUS_INTERFACE_IPSET ]:
64e4ee
+            raise dbus.exceptions.DBusException(
64e4ee
+                "org.freedesktop.DBus.Error.InvalidArgs: "
64e4ee
+                "Property '%s' does not exist" % property_name)
64e4ee
+        else:
64e4ee
             raise dbus.exceptions.DBusException(
64e4ee
                 "org.freedesktop.DBus.Error.UnknownInterface: "
64e4ee
-                "FirewallD does not implement %s" % interface_name)
64e4ee
-
64e4ee
-        raise dbus.exceptions.DBusException(
64e4ee
-            "org.freedesktop.DBus.Error.AccessDenied: "
64e4ee
-            "Property '%s' is not settable" % property_name)
64e4ee
+                "Interface '%s' does not exist" % interface_name)
64e4ee
 
64e4ee
     @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as')
64e4ee
     def PropertiesChanged(self, interface_name, changed_properties,
64e4ee
-- 
64e4ee
2.12.0
64e4ee