* processes owned by the same uid as the server, you would do this:
* <example id="auth-observer"><title>Controlling Authentication</title><programlisting>
* static gboolean
- * on_deny_authenticated_peer (GDBusAuthObserver *observer,
- * GIOStream *stream,
- * GCredentials *credentials,
- * gpointer user_data)
+ * on_authorize_authenticated_peer (GDBusAuthObserver *observer,
+ * GIOStream *stream,
+ * GCredentials *credentials,
+ * gpointer user_data)
* {
* GCredentials *me;
- * gboolean deny;
+ * gboolean authorized;
*
- * deny = TRUE;
+ * authorized = FALSE;
* me = g_credentials_new ();
*
* if (credentials != NULL &&
* !g_credentials_is_same_user (credentials, me))
- * deny = FALSE;
+ * authorized = TRUE;
*
* g_object_unref (me);
*
- * return deny;
+ * return authorized;
* }
*
* static gboolean
* NULL, /<!-- -->* GCancellable *<!-- -->/
* &error);
* g_signal_connect (observer,
- * "deny-authenticated-peer",
- * G_CALLBACK (on_deny_authenticated_peer),
+ * "authorize-authenticated-peer",
+ * G_CALLBACK (on_authorize_authenticated_peer),
* NULL);
* g_signal_connect (server,
* "new-connection",
enum
{
- DENY_AUTHENTICATED_PEER_SIGNAL,
+ AUTHORIZE_AUTHENTICATED_PEER_SIGNAL,
LAST_SIGNAL,
};
}
static gboolean
-g_dbus_auth_observer_deny_authenticated_peer_real (GDBusAuthObserver *observer,
- GIOStream *stream,
- GCredentials *credentials)
+g_dbus_auth_observer_authorize_authenticated_peer_real (GDBusAuthObserver *observer,
+ GIOStream *stream,
+ GCredentials *credentials)
+{
+ return TRUE;
+}
+
+gboolean
+_g_signal_accumulator_false_handled (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer dummy)
{
- return FALSE;
+ gboolean continue_emission;
+ gboolean signal_handled;
+
+ signal_handled = g_value_get_boolean (handler_return);
+ g_value_set_boolean (return_accu, signal_handled);
+ continue_emission = signal_handled;
+
+ return continue_emission;
}
static void
gobject_class->finalize = g_dbus_auth_observer_finalize;
- klass->deny_authenticated_peer = g_dbus_auth_observer_deny_authenticated_peer_real;
+ klass->authorize_authenticated_peer = g_dbus_auth_observer_authorize_authenticated_peer_real;
/**
- * GDBusAuthObserver::deny-authenticated-peer:
+ * GDBusAuthObserver::authorize-authenticated-peer:
* @observer: The #GDBusAuthObserver emitting the signal.
* @stream: A #GIOStream for the #GDBusConnection.
* @credentials: Credentials received from the peer or %NULL.
*
* Emitted to check if a peer that is successfully authenticated
- * should be denied.
+ * is authorized.
*
- * Returns: %TRUE if the peer should be denied, %FALSE otherwise.
+ * Returns: %TRUE if the peer is authorized, %FALSE if not.
*
* Since: 2.26
*/
- signals[DENY_AUTHENTICATED_PEER_SIGNAL] =
- g_signal_new ("deny-authenticated-peer",
+ signals[AUTHORIZE_AUTHENTICATED_PEER_SIGNAL] =
+ g_signal_new ("authorize-authenticated-peer",
G_TYPE_DBUS_AUTH_OBSERVER,
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GDBusAuthObserverClass, deny_authenticated_peer),
- g_signal_accumulator_true_handled,
+ G_STRUCT_OFFSET (GDBusAuthObserverClass, authorize_authenticated_peer),
+ _g_signal_accumulator_false_handled,
NULL, /* accu_data */
_gio_marshal_BOOLEAN__OBJECT_OBJECT,
G_TYPE_BOOLEAN,
/* ---------------------------------------------------------------------------------------------------- */
/**
- * g_dbus_auth_observer_deny_authenticated_peer:
+ * g_dbus_auth_observer_authorize_authenticated_peer:
* @observer: A #GDBusAuthObserver.
* @stream: A #GIOStream for the #GDBusConnection.
* @credentials: Credentials received from the peer or %NULL.
*
- * Emits the #GDBusAuthObserver::deny-authenticated-peer signal on @observer.
+ * Emits the #GDBusAuthObserver::authorize-authenticated-peer signal on @observer.
*
* Returns: %TRUE if the peer should be denied, %FALSE otherwise.
*
* Since: 2.26
*/
gboolean
-g_dbus_auth_observer_deny_authenticated_peer (GDBusAuthObserver *observer,
- GIOStream *stream,
- GCredentials *credentials)
+g_dbus_auth_observer_authorize_authenticated_peer (GDBusAuthObserver *observer,
+ GIOStream *stream,
+ GCredentials *credentials)
{
gboolean denied;
denied = FALSE;
g_signal_emit (observer,
- signals[DENY_AUTHENTICATED_PEER_SIGNAL],
+ signals[AUTHORIZE_AUTHENTICATED_PEER_SIGNAL],
0,
stream,
credentials,
/**
* GDBusAuthObserverClass:
- * @deny_authenticated_peer: Signal class handler for the #GDBusAuthObserver::deny-authenticated-peer signal.
+ * @authorize_authenticated_peer: Signal class handler for the #GDBusAuthObserver::authorize-authenticated-peer signal.
*
* Class structure for #GDBusAuthObserverClass.
*
/*< public >*/
/* Signals */
- gboolean (*deny_authenticated_peer) (GDBusAuthObserver *observer,
- GIOStream *stream,
- GCredentials *credentials);
+ gboolean (*authorize_authenticated_peer) (GDBusAuthObserver *observer,
+ GIOStream *stream,
+ GCredentials *credentials);
/*< private >*/
GDBusAuthObserverPrivate *priv;
};
-GType g_dbus_auth_observer_get_type (void) G_GNUC_CONST;
-GDBusAuthObserver *g_dbus_auth_observer_new (void);
-gboolean g_dbus_auth_observer_deny_authenticated_peer (GDBusAuthObserver *observer,
- GIOStream *stream,
- GCredentials *credentials);
+GType g_dbus_auth_observer_get_type (void) G_GNUC_CONST;
+GDBusAuthObserver *g_dbus_auth_observer_new (void);
+gboolean g_dbus_auth_observer_authorize_authenticated_peer (GDBusAuthObserver *observer,
+ GIOStream *stream,
+ GCredentials *credentials);
G_END_DECLS
/* ---------------------------------------------------------------------------------------------------- */
static gboolean
-on_deny_authenticated_peer (GDBusAuthObserver *observer,
- GIOStream *stream,
- GCredentials *credentials,
- gpointer user_data)
+on_authorize_authenticated_peer (GDBusAuthObserver *observer,
+ GIOStream *stream,
+ GCredentials *credentials,
+ gpointer user_data)
{
PeerData *data = user_data;
- gboolean deny_peer;
+ gboolean authorized;
data->num_connection_attempts++;
- deny_peer = FALSE;
+ authorized = TRUE;
if (!data->accept_connection)
{
- deny_peer = TRUE;
+ authorized = FALSE;
g_main_loop_quit (loop);
}
- return deny_peer;
+ return authorized;
}
/* Runs in thread we created GDBusServer in (since we didn't pass G_DBUS_SERVER_FLAGS_RUN_IN_THREAD) */
G_CALLBACK (on_new_connection),
data);
g_signal_connect (observer,
- "deny-authenticated-peer",
- G_CALLBACK (on_deny_authenticated_peer),
+ "authorize-authenticated-peer",
+ G_CALLBACK (on_authorize_authenticated_peer),
data);
g_object_unref (observer);