diff options
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | configure.ac | 20 | ||||
-rw-r--r-- | data/Makefile.am | 7 | ||||
-rw-r--r-- | data/org.gnome.LightDisplayManager.conf | 24 | ||||
-rw-r--r-- | src/display-manager.c | 2 | ||||
-rw-r--r-- | src/greeter.c | 2 |
6 files changed, 56 insertions, 4 deletions
diff --git a/Makefile.am b/Makefile.am index 200fa4b4..c48bb59b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = po src +SUBDIRS = data po src EXTRA_DIST = \ autogen.sh \ @@ -14,4 +14,5 @@ DISTCLEANFILES = \ missing \ mkinstalldirs \ omf.make \ - xmldocs.make + xmldocs.make \ + po/Makefile.in.in diff --git a/configure.ac b/configure.ac index e525c09a..03fe81a5 100644 --- a/configure.ac +++ b/configure.ac @@ -37,6 +37,25 @@ AC_PATH_PROG(DBUSBINDINGTOOL, dbus-binding-tool) AC_SUBST(DBUSBINDINGTOOL) dnl ########################################################################### +dnl Check for D-Bus +dnl ########################################################################### + +dnl - Are we specifying a different dbus root ? +AC_ARG_WITH(dbus-sys, + AS_HELP_STRING([--with-dbus-sys=<dir>], + [where D-BUS system.d directory is])) +AC_ARG_WITH(dbus-services, + AS_HELP_STRING([--with-dbus-services=<dir>], + [where D-BUS services directory is])) + +if ! test -z "$with_dbus_sys" ; then + DBUS_SYS_DIR="$with_dbus_sys" +else + DBUS_SYS_DIR="$sysconfdir/dbus-1/system.d" +fi +AC_SUBST(DBUS_SYS_DIR) + +dnl ########################################################################### dnl Documentation dnl ########################################################################### @@ -57,6 +76,7 @@ dnl ########################################################################### AC_OUTPUT([ Makefile +data/Makefile po/Makefile.in src/Makefile ]) diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 00000000..28367967 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,7 @@ +dbusconfdir = $(DBUS_SYS_DIR) +dbusconf_DATA = org.gnome.LightDisplayManager.conf + +EXTRA_DIST = $(dbusconf_DATA) + +DISTCLEANFILES = \ + Makefile.in diff --git a/data/org.gnome.LightDisplayManager.conf b/data/org.gnome.LightDisplayManager.conf new file mode 100644 index 00000000..a6ba7147 --- /dev/null +++ b/data/org.gnome.LightDisplayManager.conf @@ -0,0 +1,24 @@ +<!DOCTYPE busconfig PUBLIC + "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <!-- Only root can own the service --> + <policy user="root"> + <allow own="org.gnome.LightDisplayManager"/> + </policy> + + <!-- Greeter can control --> + <policy user="gdm"> + <allow send_destination="org.gnome.LightDisplayManager" + send_interface="org.gnome.LightDisplayManager.Display"/> + </policy> + + <policy context="default"> + <allow send_destination="org.gnome.LightDisplayManager" + send_interface="org.gnome.DBus.Properties" /> + <allow send_destination="org.gnome.LightDisplayManager" + send_interface="org.freedesktop.DBus.Introspectable"/> + </policy> + +</busconfig> diff --git a/src/display-manager.c b/src/display-manager.c index 1b55fa59..d399c926 100644 --- a/src/display-manager.c +++ b/src/display-manager.c @@ -59,7 +59,7 @@ display_manager_init (DisplayManager *manager) manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, DISPLAY_MANAGER_TYPE, DisplayManagerPrivate); - manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); // FIXME: Use system or private bus + manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); if (!manager->priv->connection) g_warning ("Failed to register on D-Bus: %s", error->message); g_clear_error (&error); diff --git a/src/greeter.c b/src/greeter.c index 6aa07203..8a6d25c3 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -141,7 +141,7 @@ greeter_init (Greeter *greeter) greeter->priv = G_TYPE_INSTANCE_GET_PRIVATE (greeter, GREETER_TYPE, GreeterPrivate); - greeter->priv->bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + greeter->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); if (!greeter->priv->bus) g_error ("Failed to connect to bus: %s", error->message); g_clear_error (&error); |