summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2011-07-16 18:58:53 +1000
committerRobert Ancell <robert.ancell@canonical.com>2011-07-16 18:58:53 +1000
commitd0f9e42bd57ae74c8eba8182bfbd1236be15860f (patch)
tree6ca1f917cd56149dcb98260af8270b810d2d3c67
parent89948d0fce76db4c8531c135e0001429656d4d55 (diff)
downloadlightdm-d0f9e42bd57ae74c8eba8182bfbd1236be15860f.tar.gz
Allow autologin as guest
-rw-r--r--NEWS2
-rw-r--r--data/lightdm.conf4
-rw-r--r--src/seat.c44
-rw-r--r--src/seat.h4
-rw-r--r--tests/Makefile.am3
-rw-r--r--tests/scripts/autologin-guest.conf10
-rw-r--r--tests/scripts/autologin-guest.script22
-rw-r--r--tests/scripts/autologin.script2
-rwxr-xr-xtests/test-autologin-guest2
9 files changed, 53 insertions, 40 deletions
diff --git a/NEWS b/NEWS
index e30ff8a0..7da255e8 100644
--- a/NEWS
+++ b/NEWS
@@ -6,7 +6,7 @@ Overview of changes in lightdm 0.4.5
* D-Bus API changes:
- Rename ShowGreeter() to SwitchToGreeter()
* Config changes:
- - Move directories into their own section
+ - Support setting autologin user to guest account
Overview of changes in lightdm 0.4.4
diff --git a/data/lightdm.conf b/data/lightdm.conf
index a137cfec..69bdd1c8 100644
--- a/data/lightdm.conf
+++ b/data/lightdm.conf
@@ -23,7 +23,8 @@ seats=Seat0
# greeter-theme = Greeter theme to use
# xsession = X session to load by default
# xsession-wrapper = Wrapper script to run X session with
-# autologin-user = User to log in with by default
+# autologin-guest = True to log in as guest by default
+# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
#
#[Defaults]
@@ -33,6 +34,7 @@ seats=Seat0
#greeter-theme=example-gtk-gnome
#xsession=gnome
#xsession-wrapper=
+#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
diff --git a/src/seat.c b/src/seat.c
index 36d3d518..ee230e82 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -46,19 +46,19 @@ G_DEFINE_TYPE (Seat, seat, G_TYPE_OBJECT);
void
seat_load_config (Seat *seat, const gchar *config_section)
{
- gchar *username;
- guint timeout;
-
- username = config_get_string (config_get_instance (), config_section, "autologin-user");
- if (!username)
- username = config_get_string (config_get_instance (), "Defaults", "autologin-user");
+ if (config_has_key (config_get_instance (), config_section, "autologin-guest"))
+ seat->priv->autologin_guest = config_get_boolean (config_get_instance (), config_section, "autologin-guest");
+ else if (config_has_key (config_get_instance (), "Defaults", "autologin-guest"))
+ seat->priv->autologin_guest = config_get_boolean (config_get_instance (), "Defaults", "autologin-guest");
+ seat->priv->autologin_username = config_get_string (config_get_instance (), config_section, "autologin-user");
+ if (!seat->priv->autologin_username)
+ seat->priv->autologin_username = config_get_string (config_get_instance (), "Defaults", "autologin-user");
if (config_has_key (config_get_instance (), config_section, "autologin-user-timeout"))
- timeout = config_get_integer (config_get_instance (), config_section, "autologin-user-timeout");
+ seat->priv->autologin_timeout = config_get_integer (config_get_instance (), config_section, "autologin-user-timeout");
else
- timeout = config_get_integer (config_get_instance (), "Defaults", "autologin-user-timeout");
- if (timeout < 0)
- timeout = 0;
- seat_set_autologin_user (SEAT (seat), username, timeout);
+ seat->priv->autologin_timeout = config_get_integer (config_get_instance (), "Defaults", "autologin-user-timeout");
+ if (seat->priv->autologin_timeout < 0)
+ seat->priv->autologin_timeout = 0;
}
void
@@ -69,28 +69,6 @@ seat_set_can_switch (Seat *seat, gboolean can_switch)
seat->priv->can_switch = can_switch;
}
-void
-seat_set_autologin_user (Seat *seat, const gchar *username, guint timeout)
-{
- g_return_if_fail (seat != NULL);
-
- g_free (seat->priv->autologin_username);
- seat->priv->autologin_username = g_strdup (username);
- seat->priv->autologin_timeout = timeout;
- seat->priv->autologin_guest = FALSE;
-}
-
-void
-seat_set_autologin_guest (Seat *seat, guint timeout)
-{
- g_return_if_fail (seat != NULL);
-
- g_free (seat->priv->autologin_username);
- seat->priv->autologin_username = NULL;
- seat->priv->autologin_timeout = timeout;
- seat->priv->autologin_guest = TRUE;
-}
-
gboolean
seat_start (Seat *seat)
{
diff --git a/src/seat.h b/src/seat.h
index 025d0ccf..80388838 100644
--- a/src/seat.h
+++ b/src/seat.h
@@ -49,10 +49,6 @@ void seat_load_config (Seat *seat, const gchar *config_section);
void seat_set_can_switch (Seat *seat, gboolean can_switch);
-void seat_set_autologin_user (Seat *seat, const gchar *username, guint timeout);
-
-void seat_set_autologin_guest (Seat *seat, guint timeout);
-
gboolean seat_start (Seat *seat);
GList *seat_get_displays (Seat *seat);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c9a793b2..60a28bcc 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -4,6 +4,7 @@ TESTS = \
test-no-config \
test-headless \
test-autologin \
+ test-autologin-guest \
test-autologin-logout \
test-login-gobject \
test-login-gobject-manual \
@@ -37,6 +38,8 @@ EXTRA_DIST = \
data/xsessions/test-session.desktop \
scripts/autologin.conf \
scripts/autologin.script \
+ scripts/autologin-guest.conf \
+ scripts/autologin-guest.script \
scripts/autologin-logout.conf \
scripts/autologin-logout.script \
scripts/headless.conf \
diff --git a/tests/scripts/autologin-guest.conf b/tests/scripts/autologin-guest.conf
new file mode 100644
index 00000000..c2b35d9d
--- /dev/null
+++ b/tests/scripts/autologin-guest.conf
@@ -0,0 +1,10 @@
+[LightDM]
+seats=test-seat
+
+[Defaults]
+autologin-guest=true
+
+[GuestAccount]
+enabled=true
+setup-script=test-setup-guest
+cleanup-script=test-cleanup-guest
diff --git a/tests/scripts/autologin-guest.script b/tests/scripts/autologin-guest.script
new file mode 100644
index 00000000..9085438a
--- /dev/null
+++ b/tests/scripts/autologin-guest.script
@@ -0,0 +1,22 @@
+#
+# Check automatically logs in default user
+#
+
+RUNNER DAEMON-START
+
+# X server starts
+XSERVER :50 START
+XSERVER :50 INDICATE-READY
+XSERVER :50 ACCEPT-CONNECT
+
+# Default session starts
+SESSION START USER=guest
+XSERVER :50 ACCEPT-CONNECT
+SESSION CONNECT-XSERVER
+
+# Cleanup
+*STOP-DAEMON
+# Don't know what order they will terminate
+(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/autologin.script b/tests/scripts/autologin.script
index 8a024e6e..28488ece 100644
--- a/tests/scripts/autologin.script
+++ b/tests/scripts/autologin.script
@@ -1,5 +1,5 @@
#
-# Check automaitcally logs in default user
+# Check automatically logs in default user
#
RUNNER DAEMON-START
diff --git a/tests/test-autologin-guest b/tests/test-autologin-guest
new file mode 100755
index 00000000..14feab62
--- /dev/null
+++ b/tests/test-autologin-guest
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/test-runner autologin-guest