summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobert.ancell@gmail.com <>2010-04-30 11:49:29 +1000
committerrobert.ancell@gmail.com <>2010-04-30 11:49:29 +1000
commit26c05b8567a4108caa4db35b9d646bd4ab812c58 (patch)
tree172c12f97a78f7b2d77d9b39a844d15952997895
parentd8940e7e4206b845754e1b8cae77de5bdac105d4 (diff)
downloadlightdm-git-26c05b8567a4108caa4db35b9d646bd4ab812c58.tar.gz
Install D-Bus service, use system bus
-rw-r--r--Makefile.am5
-rw-r--r--configure.ac20
-rw-r--r--data/Makefile.am7
-rw-r--r--data/org.gnome.LightDisplayManager.conf24
-rw-r--r--src/display-manager.c2
-rw-r--r--src/greeter.c2
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);