[gdm/rhel-7.9: 1/51] Honor initial setup being disabled by distro installer




commit 74cd3c0bbf6e984cb52e2734af5bd7a5f9f8cf13
Author: Rui Matos <tiagomatos gmail com>
Date:   Mon Jan 23 20:19:51 2017 +0100

    Honor initial setup being disabled by distro installer
    
    Sysadmins might want to disable any kind of initial setup for their
    users, perhaps because they pre-configure their environments. We
    already provide a configuration file option for this but distro
    installers might have their own way of requesting this.
    
    At least the anaconda installer provides an option to skip any kind
    post-install setup tools so, for now we're only adding support for
    that but more might be added in the future.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777708

 daemon/Makefile.am   |  1 +
 daemon/gdm-display.c | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)
---
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 5e9eb5e06..3b1b15122 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -15,6 +15,7 @@ AM_CPPFLAGS = \
        -DLOCALSTATEDIR=\"$(localstatedir)\"            \
        -DLOGDIR=\"$(logdir)\"                          \
        -DSBINDIR=\"$(sbindir)\"                        \
+       -DSYSCONFDIR=\"$(sysconfdir)\"                  \
        -DGNOMELOCALEDIR=\""$(datadir)/locale"\"        \
        -DGDM_RUN_DIR=\"$(GDM_RUN_DIR)\"                \
        -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\"            \
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
index 1b58781de..a28277b46 100644
--- a/daemon/gdm-display.c
+++ b/daemon/gdm-display.c
@@ -1547,6 +1547,31 @@ kernel_cmdline_initial_setup_force_state (gboolean *force_state)
         return TRUE;
 }
 
+static gboolean
+initial_setup_disabled_by_anaconda (void)
+{
+        GKeyFile *key_file;
+        const gchar *file_name = SYSCONFDIR "/sysconfig/anaconda";
+        gboolean disabled = FALSE;
+        GError *error = NULL;
+
+        key_file = g_key_file_new ();
+        if (!g_key_file_load_from_file (key_file, file_name, G_KEY_FILE_NONE, &error)) {
+                if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT) &&
+                    !g_error_matches (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) {
+                        g_warning ("Could not read %s: %s", file_name, error->message);
+                }
+                g_error_free (error);
+                goto out;
+        }
+
+        disabled = g_key_file_get_boolean (key_file, "General",
+                                           "post_install_tools_disabled", NULL);
+ out:
+        g_key_file_unref (key_file);
+        return disabled;
+}
+
 static gboolean
 wants_initial_setup (GdmDisplay *self)
 {
@@ -1587,6 +1612,10 @@ wants_initial_setup (GdmDisplay *self)
                 return FALSE;
         }
 
+        if (initial_setup_disabled_by_anaconda ()) {
+                return FALSE;
+        }
+
         return enabled;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]