![]() |
![]() |
![]() |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
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 : |
TRUE if the peer should be denied, FALSE otherwise.
|
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 : |
TRUE if the peer is authorized, FALSE if not.
|
Since 2.26