]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Make the real name of a guest account translatable
authorRobert Ancell <robert.ancell@canonical.com>
Mon, 28 Jul 2014 01:36:09 +0000 (13:36 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Mon, 28 Jul 2014 01:36:09 +0000 (13:36 +1200)
data/lightdm.conf
debian/patches/04_language_handling.patch
src/lightdm.c
src/seat.c
tests/Makefile.am
tests/scripts/autologin-pam-config.conf [new file with mode: 0644]
tests/scripts/login-pam-config.conf [new file with mode: 0644]
tests/test-autologin-pam-config [new file with mode: 0755]
tests/test-login-pam-config [new file with mode: 0755]

index 9e7ba17ca6eba6a4a86721fd8f59946dd2afc46a..8d2289fe3cf85f95b3c0ff5cc885b48c359f9a5a 100644 (file)
@@ -35,6 +35,9 @@
 #
 # type = Seat type (xlocal, xremote)
 # xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
+# pam-service = PAM service to use for login
+# pam-autologin-service = PAM service to use for autologin
+# pam-greeter-service = PAM service to use for greeters
 # xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
 # xserver-layout = Layout to pass to X server
 # xserver-config = Config file to pass to X server
@@ -73,6 +76,9 @@
 [SeatDefaults]
 #type=xlocal
 #xdg-seat=seat0
+#pam-service=lightdm
+#pam-autologin-service=lightdm-autologin
+#pam-greeter-service=lightdm-greeter
 #xserver-command=X
 #xserver-layout=
 #xserver-config=
index a2177351e6125f9f7dcbafa239cb463b1b85364e..6f06e49c5ed98d5b34a5eecad7c726ff99dd7aed 100644 (file)
@@ -75,7 +75,7 @@ Index: trunk/src/seat.c
 ===================================================================
 --- trunk.orig/src/seat.c
 +++ trunk/src/seat.c
-@@ -955,7 +955,7 @@ configure_session (Session *session, Ses
+@@ -950,7 +950,7 @@ configure_session (Session *session, Ses
          session_set_env (session, "XDG_CURRENT_DESKTOP", desktop_name);
      if (language && language[0] != '\0')
      {
index bdfd2b1822efe73d343d28fc132119d342250296..ff33085f37326a6f0ad9b458e0a602dd40df59ea 100644 (file)
@@ -1109,6 +1109,12 @@ main (int argc, char **argv)
         config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
     if (!config_has_key (config_get_instance (), "SeatDefaults", "type"))
         config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-service"))
+        config_set_string (config_get_instance (), "SeatDefaults", "pam-service", "lightdm");
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-autologin-service"))
+        config_set_string (config_get_instance (), "SeatDefaults", "pam-autologin-service", "lightdm-autologin");
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-greeter-service"))
+        config_set_string (config_get_instance (), "SeatDefaults", "pam-greeter-service", "lightdm-greeter");
     if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))
         config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");
     if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))
index a30ee661dc93820c53c450f386c16b7eabaf6daa..ab2e86fba77a40f26eb351c81e86b768e0c2a773 100644 (file)
@@ -64,11 +64,6 @@ struct SeatPrivate
     gboolean stopped;
 };
 
-/* PAM services to use */
-#define GREETER_SERVICE   "lightdm-greeter"
-#define USER_SERVICE      "lightdm"
-#define AUTOLOGIN_SERVICE "lightdm-autologin"
-
 static void seat_logger_iface_init (LoggerInterface *iface);
 
 G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,
@@ -1091,7 +1086,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
         session = create_guest_session (seat, session_name);
         if (!session)
             return FALSE;
-        session_set_pam_service (session, AUTOLOGIN_SERVICE);
+        session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
     }
     else
     {
@@ -1230,7 +1225,7 @@ create_greeter_session (Seat *seat)
     set_session_env (SESSION (greeter_session));
     session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");
 
-    session_set_pam_service (SESSION (greeter_session), GREETER_SERVICE);
+    session_set_pam_service (SESSION (greeter_session), seat_get_string_property (seat, "pam-greeter-service"));
     if (getuid () == 0)
     {
         gchar *greeter_user;      
@@ -1246,7 +1241,9 @@ create_greeter_session (Seat *seat)
     session_set_argv (SESSION (greeter_session), argv);
     g_strfreev (argv);
 
-    greeter_set_pam_services (greeter_session, USER_SERVICE, AUTOLOGIN_SERVICE);
+    greeter_set_pam_services (greeter_session,
+                              seat_get_string_property (seat, "pam-service"),
+                              seat_get_string_property (seat, "pam-autologin-service"));
     g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat);
     g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat);
 
@@ -1483,7 +1480,7 @@ seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_nam
     /* Attempt to authenticate them */
     session = create_user_session (seat, username, FALSE);
     g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat);
-    session_set_pam_service (session, USER_SERVICE);
+    session_set_pam_service (session, seat_get_string_property (seat, "pam-service"));
     session_start (session);
 
     return FALSE;
@@ -1533,7 +1530,7 @@ seat_switch_to_guest (Seat *seat, const gchar *session_name)
     if (seat->priv->session_to_activate)
         g_object_unref (seat->priv->session_to_activate);
     seat->priv->session_to_activate = g_object_ref (session);
-    session_set_pam_service (session, AUTOLOGIN_SERVICE);
+    session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
     session_set_display_server (session, display_server);
 
     return display_server_start (display_server);
@@ -1658,7 +1655,7 @@ seat_real_start (Seat *seat)
             session = create_user_session (seat, autologin_username, TRUE);
 
         if (session)
-            session_set_pam_service (session, AUTOLOGIN_SERVICE);
+            session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
 
         /* Load in background if required */
         if (autologin_in_background && session)
index 183577b1fcb473b8f21009c8d6e4eea51d9af1f2..ad2d22ad8b1b77b79fd4f1d5ea3d20d7a7721e25 100644 (file)
@@ -20,6 +20,7 @@ TESTS = \
        test-headless \
        test-autologin \
        test-autologin-pam \
+       test-autologin-pam-config \
        test-autologin-in-background \
        test-autologin-guest-in-background \
        test-autologin-timeout-in-background \
@@ -37,6 +38,7 @@ TESTS = \
        test-restart-authentication \
        test-cancel-authentication-gobject \
        test-login-pam \
+       test-login-pam-config \
        test-denied \
        test-expired \
        test-cred-error \
@@ -350,6 +352,7 @@ EXTRA_DIST = \
        scripts/autologin-in-background.conf \
        scripts/autologin-invalid-greeter.conf \
        scripts/autologin-pam.conf \
+       scripts/autologin-pam-config.conf \
        scripts/autologin-invalid-session.conf \
        scripts/autologin-invalid-user.conf \
        scripts/autologin-logout.conf \
@@ -424,6 +427,7 @@ EXTRA_DIST = \
        scripts/login-new-authtok.conf \
        scripts/login-no-password.conf \
        scripts/login-pam.conf \
+       scripts/login-pam-config.conf \
        scripts/login-pick-session.conf \
        scripts/login-previous-session.conf \
        scripts/login-remember-session.conf \
diff --git a/tests/scripts/autologin-pam-config.conf b/tests/scripts/autologin-pam-config.conf
new file mode 100644 (file)
index 0000000..2092ebb
--- /dev/null
@@ -0,0 +1,44 @@
+#
+# Check we can configure the PAM service for automatic login
+#
+
+[SeatDefaults]
+autologin-user=no-password1
+user-session=default
+pam-autologin-service=lightdm-autologin-alternative
+
+[test-pam]
+log-events=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session authenticates
+#?PAM-no-password1 START SERVICE=lightdm-autologin-alternative USER=no-password1
+#?PAM-no-password1 AUTHENTICATE
+#?PAM-no-password1 ACCT-MGMT
+#?PAM-no-password1 SETCRED ESTABLISH_CRED
+#?PAM-no-password1 OPEN-SESSION
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/no-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=no-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?PAM-no-password1 CLOSE-SESSION
+#?PAM-no-password1 SETCRED DELETE_CRED
+#?PAM-no-password1 END
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/login-pam-config.conf b/tests/scripts/login-pam-config.conf
new file mode 100644 (file)
index 0000000..bdc9242
--- /dev/null
@@ -0,0 +1,70 @@
+#
+# Check we can configure the PAM service for login
+#
+
+[SeatDefaults]
+user-session=default
+pam-service=lightdm-alternative
+pam-greeter-service=lightdm-greeter-alternative
+
+[test-pam]
+log-events=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Create PAM session for greeter
+#?PAM-lightdm START SERVICE=lightdm-greeter-alternative USER=lightdm
+#?PAM-lightdm SETCRED ESTABLISH_CRED
+#?PAM-lightdm OPEN-SESSION
+
+# Greeter starts
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Greeter does authentication via PAM
+#?*GREETER-X-0 AUTHENTICATE USERNAME=have-password1
+#?PAM-have-password1 START SERVICE=lightdm-alternative USER=have-password1
+#?PAM-have-password1 AUTHENTICATE
+#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-0 RESPOND TEXT="password"
+#?PAM-have-password1 ACCT-MGMT
+#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+
+# User session starts
+#?*GREETER-X-0 START-SESSION
+#?PAM-have-password1 SETCRED ESTABLISH_CRED
+#?PAM-have-password1 OPEN-SESSION
+
+# Greeter session stops
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?PAM-lightdm CLOSE-SESSION
+#?PAM-lightdm SETCRED DELETE_CRED
+#?PAM-lightdm END
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?PAM-have-password1 CLOSE-SESSION
+#?PAM-have-password1 SETCRED DELETE_CRED
+#?PAM-have-password1 END
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/test-autologin-pam-config b/tests/test-autologin-pam-config
new file mode 100755 (executable)
index 0000000..8746fb5
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner autologin-pam-config test-gobject-greeter
diff --git a/tests/test-login-pam-config b/tests/test-login-pam-config
new file mode 100755 (executable)
index 0000000..e0320f1
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner login-pam-config test-gobject-greeter