|  |  |  | GIO Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Signals | ||||
#include <gio/gio.h>
                    GDBusAuthObserver;
                    GDBusAuthObserverClass;
GDBusAuthObserver * g_dbus_auth_observer_new            (void);
gboolean            g_dbus_auth_observer_authorize_authenticated_peer
                                                        (GDBusAuthObserver *observer,
                                                         GIOStream *stream,
                                                         GCredentials *credentials);
The GDBusAuthObserver type provides a mechanism for participating in how a GDBusServer (or a GDBusConnection) 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
For example, if you only want to allow D-Bus connections from processes owned by the same uid as the server, you would do this:
Example 7. Controlling Authentication
static gboolean
on_authorize_authenticated_peer (GDBusAuthObserver *observer,
                                 GIOStream         *stream,
                                 GCredentials      *credentials,
                                 gpointer           user_data)
{
  GCredentials *me;
  gboolean authorized;
  authorized = FALSE;
  me = g_credentials_new ();
  if (credentials != NULL &&
      !g_credentials_is_same_user (credentials, me))
    authorized = TRUE;
  g_object_unref (me);
  return authorized;
}
static gboolean
on_new_connection (GDBusServer     *server,
                   GDBusConnection *connection,
                   gpointer         user_data)
{
  /* Guaranteed here that @connection is from a process owned by the same user */
}
[...]
GDBusAuthObserver *observer;
GDBusServer *server;
GError *error;
error = NULL;
observer = g_dbus_auth_observer_new ();
server = g_dbus_server_new_sync ("unix:tmpdir=/tmp/my-app-name",
                                 G_DBUS_SERVER_FLAGS_NONE,
                                 observer,
                                 NULL, /* GCancellable */
                                 &error);
g_signal_connect (observer,
                  "authorize-authenticated-peer",
                  G_CALLBACK (on_authorize_authenticated_peer),
                  NULL);
g_signal_connect (server,
                  "new-connection",
                  G_CALLBACK (on_new_connection),
                  NULL);
g_object_unref (observer);
g_dbus_server_start (server);
typedef struct _GDBusAuthObserver GDBusAuthObserver;
The GDBusAuthObserver structure contains only private data and should only be accessed using the provided API.
Since 2.26
typedef struct {
  /* Signals */
  gboolean (*authorize_authenticated_peer) (GDBusAuthObserver  *observer,
                                            GIOStream          *stream,
                                            GCredentials       *credentials);
} GDBusAuthObserverClass;
Class structure for GDBusAuthObserverClass.
| Signal class handler for the "authorize-authenticated-peer" signal. | 
Since 2.26
GDBusAuthObserver * g_dbus_auth_observer_new            (void);
Creates a new GDBusAuthObserver object.
| Returns : | A GDBusAuthObserver. Free with g_object_unref(). | 
Since 2.26
gboolean g_dbus_auth_observer_authorize_authenticated_peer (GDBusAuthObserver *observer,GIOStream *stream,GCredentials *credentials);
Emits the "authorize-authenticated-peer" signal on observer.
| 
 | A GDBusAuthObserver. | 
| 
 | A GIOStream for the GDBusConnection. | 
| 
 | Credentials received from the peer or NULL. | 
| Returns : | TRUEif the peer should be denied,FALSEotherwise. | 
Since 2.26
"authorize-authenticated-peer" signalgboolean user_function (GDBusAuthObserver *observer, GIOStream *stream, GCredentials *credentials, gpointer user_data) : Run Last
Emitted to check if a peer that is successfully authenticated is authorized.
| 
 | The GDBusAuthObserver emitting the signal. | 
| 
 | A GIOStream for the GDBusConnection. | 
| 
 | Credentials received from the peer or NULL. | 
| 
 | user data set when the signal handler was connected. | 
| Returns : | TRUEif the peer is authorized,FALSEif not. | 
Since 2.26