:right-sidebar: True DBusAuthObserver =================================================================== .. currentmodule:: gi.repository.Gio .. versionadded:: 2.26 .. class:: DBusAuthObserver(**properties: ~typing.Any) :no-contents-entry: Superclasses: :class:`~gi.repository.GObject.Object` ``GDBusAuthObserver`` provides a mechanism for participating in how a :obj:`~gi.repository.Gio.DBusServer` (or a :obj:`~gi.repository.Gio.DBusConnection`\) authenticates remote peers. Simply instantiate a ``GDBusAuthObserver`` and connect to the signals you are interested in. Note that new signals may be added in the future. Controlling Authentication Mechanisms -------------------------------------------------------------------------------- By default, a ``GDBusServer`` or server-side ``GDBusConnection`` will allow any authentication mechanism to be used. If you only want to allow D-Bus connections with the ``EXTERNAL`` mechanism, which makes use of credentials passing and is the recommended mechanism for modern Unix platforms such as Linux and the BSD family, you would use a signal handler like this: .. code-block:: c :dedent: static gboolean on_allow_mechanism (GDBusAuthObserver *observer, const gchar *mechanism, gpointer user_data) { if (g_strcmp0 (mechanism, "EXTERNAL") == 0) { return TRUE; } return FALSE; } Controlling Authorization -------------------------------------------------------------------------------- By default, a ``GDBusServer`` or server-side ``GDBusConnection`` will accept connections from any successfully authenticated user (but not from anonymous connections using the ``ANONYMOUS`` mechanism). If you only want to allow D-Bus connections from processes owned by the same uid as the server, since GLib 2.68, you should use the ``G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER`` flag. It’s equivalent to the following signal handler: .. code-block:: c :dedent: static gboolean on_authorize_authenticated_peer (GDBusAuthObserver *observer, GIOStream *stream, GCredentials *credentials, gpointer user_data) { gboolean authorized; authorized = FALSE; if (credentials != NULL) { GCredentials *own_credentials; own_credentials = g_credentials_new (); if (g_credentials_is_same_user (credentials, own_credentials, NULL)) authorized = TRUE; g_object_unref (own_credentials); } return authorized; } Constructors ------------ .. rst-class:: interim-class .. class:: DBusAuthObserver :no-index: .. classmethod:: new() -> ~gi.repository.Gio.DBusAuthObserver Creates a new :obj:`~gi.repository.Gio.DBusAuthObserver` object. .. versionadded:: 2.26 Methods ------- .. rst-class:: interim-class .. class:: DBusAuthObserver :no-index: .. method:: allow_mechanism(mechanism: str) -> bool Emits the :obj:`~gi.repository.Gio.DBusAuthObserver`\::allow-mechanism signal on ``observer``\. .. versionadded:: 2.34 :param mechanism: The name of the mechanism, e.g. ``DBUS_COOKIE_SHA1``\. .. method:: authorize_authenticated_peer(stream: ~gi.repository.Gio.IOStream, credentials: ~gi.repository.Gio.Credentials | None = None) -> bool Emits the :obj:`~gi.repository.Gio.DBusAuthObserver`\::authorize-authenticated-peer signal on ``observer``\. .. versionadded:: 2.26 :param stream: A :obj:`~gi.repository.Gio.IOStream` for the :obj:`~gi.repository.Gio.DBusConnection`\. :param credentials: Credentials received from the peer or :const:`None`. Signals ------- .. rst-class:: interim-class .. class:: DBusAuthObserver.signals :no-index: .. method:: allow_mechanism(mechanism: str) -> bool The type of the None singleton. .. versionadded:: 2.34 :param mechanism: The name of the mechanism, e.g. ``DBUS_COOKIE_SHA1``\. .. method:: authorize_authenticated_peer(stream: ~gi.repository.Gio.IOStream, credentials: ~gi.repository.Gio.Credentials | None = None) -> bool The type of the None singleton. .. versionadded:: 2.26 :param stream: A :obj:`~gi.repository.Gio.IOStream` for the :obj:`~gi.repository.Gio.DBusConnection`\. :param credentials: Credentials received from the peer or :const:`None`.