gi-gio-2.0.25: Gio bindings

CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellNone
LanguageHaskell2010

GI.Gio.Objects.DBusAuthObserver

Contents

Description

The tDBusAuthObserver type provides a mechanism for participating in how a tDBusServer (or a tDBusConnection) authenticates remote peers. Simply instantiate a tDBusAuthObserver 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 tDBusServer or server-side tDBusConnection 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:

C code

static gboolean
on_allow_mechanism (GDBusAuthObserver *observer,
                    const gchar       *mechanism,
                    gpointer           user_data)
{
  if (g_strcmp0 (mechanism, "EXTERNAL") == 0)
    {
      return TRUE;
    }

  return FALSE;
}

# {auth-observer}

By default, a tDBusServer or server-side tDBusConnection 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, you would use a signal handler like the following:

C code

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;
}

Since: 2.26

Synopsis

Exported types

newtype DBusAuthObserver Source #

Memory-managed wrapper type.

Constructors

DBusAuthObserver (ManagedPtr DBusAuthObserver) 
Instances
Eq DBusAuthObserver Source # 
Instance details

Defined in GI.Gio.Objects.DBusAuthObserver

GObject DBusAuthObserver Source # 
Instance details

Defined in GI.Gio.Objects.DBusAuthObserver

Methods

gobjectType :: IO GType

IsGValue DBusAuthObserver Source #

Convert DBusAuthObserver to and from GValue with toGValue and fromGValue.

Instance details

Defined in GI.Gio.Objects.DBusAuthObserver

Methods

toGValue :: DBusAuthObserver -> IO GValue

fromGValue :: GValue -> IO DBusAuthObserver

HasParentTypes DBusAuthObserver Source # 
Instance details

Defined in GI.Gio.Objects.DBusAuthObserver

type ParentTypes DBusAuthObserver Source # 
Instance details

Defined in GI.Gio.Objects.DBusAuthObserver

type ParentTypes DBusAuthObserver = Object ': ([] :: [Type])

class (GObject o, IsDescendantOf DBusAuthObserver o) => IsDBusAuthObserver o Source #

Type class for types which can be safely cast to DBusAuthObserver, for instance with toDBusAuthObserver.

Instances
(GObject o, IsDescendantOf DBusAuthObserver o) => IsDBusAuthObserver o Source # 
Instance details

Defined in GI.Gio.Objects.DBusAuthObserver

toDBusAuthObserver :: (MonadIO m, IsDBusAuthObserver o) => o -> m DBusAuthObserver Source #

Cast to DBusAuthObserver, for types for which this is known to be safe. For general casts, use castTo.

noDBusAuthObserver :: Maybe DBusAuthObserver Source #

A convenience alias for Nothing :: Maybe DBusAuthObserver.

Methods

Overloaded methods

allowMechanism

dBusAuthObserverAllowMechanism Source #

Arguments

:: (HasCallStack, MonadIO m, IsDBusAuthObserver a) 
=> a

observer: A tDBusAuthObserver.

-> Text

mechanism: The name of the mechanism, e.g. DBUS_COOKIE_SHA1.

-> m Bool

Returns: True if mechanism can be used to authenticate the other peer, False if not.

Emits the allowMechanism signal on observer.

Since: 2.34

authorizeAuthenticatedPeer

dBusAuthObserverAuthorizeAuthenticatedPeer Source #

Arguments

:: (HasCallStack, MonadIO m, IsDBusAuthObserver a, IsIOStream b, IsCredentials c) 
=> a

observer: A tDBusAuthObserver.

-> b

stream: A tIOStream for the tDBusConnection.

-> Maybe c

credentials: Credentials received from the peer or Nothing.

-> m Bool

Returns: True if the peer is authorized, False if not.

Emits the authorizeAuthenticatedPeer signal on observer.

Since: 2.26

new

dBusAuthObserverNew Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> m DBusAuthObserver

Returns: A tDBusAuthObserver. Free with objectUnref.

Creates a new tDBusAuthObserver object.

Since: 2.26

Signals

allowMechanism

type C_DBusAuthObserverAllowMechanismCallback = Ptr () -> CString -> Ptr () -> IO CInt Source #

Type for the callback on the (unwrapped) C side.

type DBusAuthObserverAllowMechanismCallback Source #

Arguments

 = Text

mechanism: The name of the mechanism, e.g. DBUS_COOKIE_SHA1.

-> IO Bool

Returns: True if mechanism can be used to authenticate the other peer, False if not.

Emitted to check if mechanism is allowed to be used.

Since: 2.34

afterDBusAuthObserverAllowMechanism :: (IsDBusAuthObserver a, MonadIO m) => a -> DBusAuthObserverAllowMechanismCallback -> m SignalHandlerId Source #

Connect a signal handler for the allowMechanism signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dBusAuthObserver #allowMechanism callback

onDBusAuthObserverAllowMechanism :: (IsDBusAuthObserver a, MonadIO m) => a -> DBusAuthObserverAllowMechanismCallback -> m SignalHandlerId Source #

Connect a signal handler for the allowMechanism signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dBusAuthObserver #allowMechanism callback

authorizeAuthenticatedPeer

type C_DBusAuthObserverAuthorizeAuthenticatedPeerCallback = Ptr () -> Ptr IOStream -> Ptr Credentials -> Ptr () -> IO CInt Source #

Type for the callback on the (unwrapped) C side.

type DBusAuthObserverAuthorizeAuthenticatedPeerCallback Source #

Arguments

 = IOStream

stream: A tIOStream for the tDBusConnection.

-> Maybe Credentials

credentials: Credentials received from the peer or Nothing.

-> IO Bool

Returns: True if the peer is authorized, False if not.

Emitted to check if a peer that is successfully authenticated is authorized.

Since: 2.26

afterDBusAuthObserverAuthorizeAuthenticatedPeer :: (IsDBusAuthObserver a, MonadIO m) => a -> DBusAuthObserverAuthorizeAuthenticatedPeerCallback -> m SignalHandlerId Source #

Connect a signal handler for the authorizeAuthenticatedPeer signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dBusAuthObserver #authorizeAuthenticatedPeer callback

onDBusAuthObserverAuthorizeAuthenticatedPeer :: (IsDBusAuthObserver a, MonadIO m) => a -> DBusAuthObserverAuthorizeAuthenticatedPeerCallback -> m SignalHandlerId Source #

Connect a signal handler for the authorizeAuthenticatedPeer signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dBusAuthObserver #authorizeAuthenticatedPeer callback