374b135
From 402cbab6e8267fcd959bcfa84a47f4871b59944d Mon Sep 17 00:00:00 2001
374b135
From: Stef Walter <stefw@redhat.com>
374b135
Date: Fri, 28 Oct 2016 20:27:48 +0200
374b135
Subject: [PATCH] service: Add nss and pam sssd.conf services after joining
374b135
374b135
After adding a domain to sssd.conf add the nss and pam services
374b135
to the [sssd] block.
374b135
374b135
https://bugs.freedesktop.org/show_bug.cgi?id=98479
374b135
---
374b135
 service/realm-sssd-ad.c     | 3 +++
374b135
 service/realm-sssd-config.c | 2 --
374b135
 service/realm-sssd-ipa.c    | 3 +++
374b135
 tests/test-sssd-config.c    | 4 ++--
374b135
 4 files changed, 8 insertions(+), 4 deletions(-)
374b135
374b135
diff --git a/service/realm-sssd-ad.c b/service/realm-sssd-ad.c
374b135
index 5ed384d..5fa81ce 100644
374b135
--- a/service/realm-sssd-ad.c
374b135
+++ b/service/realm-sssd-ad.c
374b135
@@ -160,6 +160,7 @@ configure_sssd_for_domain (RealmIniConfig *config,
374b135
                            gboolean use_adcli,
374b135
                            GError **error)
374b135
 {
374b135
+	const gchar *services[] = { "nss", "pam", NULL };
374b135
 	GString *realmd_tags;
374b135
 	const gchar *access_provider;
374b135
 	const gchar *shell;
374b135
@@ -206,6 +207,8 @@ configure_sssd_for_domain (RealmIniConfig *config,
374b135
 	                                    "ldap_sasl_authid", authid,
374b135
 	                                    NULL);
374b135
 
374b135
+	realm_ini_config_set_list_diff (config, "sssd", "services", ", ", services, NULL);
374b135
+
374b135
 	g_free (authid);
374b135
 	g_string_free (realmd_tags, TRUE);
374b135
 
374b135
diff --git a/service/realm-sssd-config.c b/service/realm-sssd-config.c
374b135
index 2096afd..d4398b9 100644
374b135
--- a/service/realm-sssd-config.c
374b135
+++ b/service/realm-sssd-config.c
374b135
@@ -154,8 +154,6 @@ realm_sssd_config_add_domain (RealmIniConfig *config,
374b135
 	g_strfreev (already);
374b135
 
374b135
 	/* Setup a default sssd section */
374b135
-	if (!realm_ini_config_have (config, "section", "services"))
374b135
-		realm_ini_config_set (config, "sssd", "services", "nss, pam", NULL);
374b135
 	if (!realm_ini_config_have (config, "sssd", "config_file_version"))
374b135
 		realm_ini_config_set (config, "sssd", "config_file_version", "2", NULL);
374b135
 
374b135
diff --git a/service/realm-sssd-ipa.c b/service/realm-sssd-ipa.c
374b135
index b12136e..001870d 100644
374b135
--- a/service/realm-sssd-ipa.c
374b135
+++ b/service/realm-sssd-ipa.c
374b135
@@ -156,6 +156,7 @@ on_ipa_client_do_restart (GObject *source,
374b135
                           GAsyncResult *result,
374b135
                           gpointer user_data)
374b135
 {
374b135
+	const gchar *services[] = { "nss", "pam", NULL };
374b135
 	GTask *task = G_TASK (user_data);
374b135
 	EnrollClosure *enroll = g_task_get_task_data (task);
374b135
 	RealmSssd *sssd = g_task_get_source_object (task);
374b135
@@ -207,6 +208,8 @@ on_ipa_client_do_restart (GObject *source,
374b135
 		                                 "realmd_tags", realmd_tags,
374b135
 		                                 NULL);
374b135
 
374b135
+		realm_ini_config_set_list_diff (config, "sssd", "services", ", ", services, NULL);
374b135
+
374b135
 		g_free (home);
374b135
 	}
374b135
 
374b135
diff --git a/tests/test-sssd-config.c b/tests/test-sssd-config.c
374b135
index 59eab75..892b9d5 100644
374b135
--- a/tests/test-sssd-config.c
374b135
+++ b/tests/test-sssd-config.c
374b135
@@ -90,7 +90,7 @@ test_add_domain (Test *test,
374b135
                  gconstpointer unused)
374b135
 {
374b135
 	const gchar *data = "[domain/one]\nval=1\n[sssd]\ndomains=one";
374b135
-	const gchar *check = "[domain/one]\nval=1\n[sssd]\ndomains = one, two\nconfig_file_version = 2\nservices = nss, pam\n\n[domain/two]\ndos = 2\n";
374b135
+	const gchar *check = "[domain/one]\nval=1\n[sssd]\ndomains = one, two\nconfig_file_version = 2\n\n[domain/two]\ndos = 2\n";
374b135
 	GError *error = NULL;
374b135
 	gchar *output;
374b135
 	gboolean ret;
374b135
@@ -140,7 +140,7 @@ static void
374b135
 test_add_domain_only (Test *test,
374b135
                       gconstpointer unused)
374b135
 {
374b135
-	const gchar *check = "\n[sssd]\ndomains = two\nconfig_file_version = 2\nservices = nss, pam\n\n[domain/two]\ndos = 2\n";
374b135
+	const gchar *check = "\n[sssd]\ndomains = two\nconfig_file_version = 2\n\n[domain/two]\ndos = 2\n";
374b135
 	GError *error = NULL;
374b135
 	gchar *output;
374b135
 	gboolean ret;
374b135
-- 
374b135
2.9.3
374b135