summaryrefslogtreecommitdiffstats
path: root/src/confdb
diff options
context:
space:
mode:
authorMichal Židek <mzidek@redhat.com>2016-03-22 14:09:34 +0100
committerJakub Hrozek <jhrozek@redhat.com>2016-06-27 22:05:21 +0200
commitcca497b4cbbbf05c4f9181b7d8113cde81754831 (patch)
treed04418f02e4aeadb99b849c8219087e982cd6dba /src/confdb
parente157b9f6cb370e1b94bcac2044d26ad66d640fba (diff)
downloadsssd-cca497b4cbbbf05c4f9181b7d8113cde81754831.tar.gz
sssd-cca497b4cbbbf05c4f9181b7d8113cde81754831.tar.xz
sssd-cca497b4cbbbf05c4f9181b7d8113cde81754831.zip
confdb: Make it possible to use config snippets
Resolves: https://fedorahosted.org/sssd/ticket/2247 Signed-off-by: Lukas Slebodnik <lslebodn@redhat.com> Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/confdb')
-rw-r--r--src/confdb/confdb.h1
-rw-r--r--src/confdb/confdb_setup.c31
-rw-r--r--src/confdb/confdb_setup.h1
3 files changed, 12 insertions, 21 deletions
diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h
index 0a3d6a035..2cd75b9e8 100644
--- a/src/confdb/confdb.h
+++ b/src/confdb/confdb.h
@@ -42,6 +42,7 @@
#define CONFDB_FILE "config.ldb"
#define SSSD_DEFAULT_CONFIG_FILE SSSD_DEFAULT_CONF_DIR"/sssd.conf"
#define SSSD_CONFIG_FILE SSSD_CONF_DIR"/sssd.conf"
+#define CONFDB_DEFAULT_CONFIG_DIR SSSD_CONF_DIR"/conf.d"
#define SSSD_MIN_ID 1
#define SSSD_LOCAL_MINID 1000
#define CONFDB_DEFAULT_SHELL_FALLBACK "/bin/sh"
diff --git a/src/confdb/confdb_setup.c b/src/confdb/confdb_setup.c
index 3443d68d3..1e4b9a269 100644
--- a/src/confdb/confdb_setup.c
+++ b/src/confdb/confdb_setup.c
@@ -127,14 +127,14 @@ static int confdb_create_base(struct confdb_ctx *cdb)
return EOK;
}
-static int confdb_init_db(const char *config_file, struct confdb_ctx *cdb)
+static int confdb_init_db(const char *config_file, const char *config_dir,
+ struct confdb_ctx *cdb)
{
TALLOC_CTX *tmp_ctx;
int ret;
int sret = EOK;
int version;
char timestr[21];
- char *lasttimestr;
bool in_transaction = false;
const char *config_ldif;
const char *vals[2] = { timestr, NULL };
@@ -206,9 +206,6 @@ static int confdb_init_db(const char *config_file, struct confdb_ctx *cdb)
goto done;
}
- /* Determine if the conf file has changed since we last updated
- * the confdb
- */
ret = sss_ini_get_stat(init_data);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE,
@@ -225,22 +222,13 @@ static int confdb_init_db(const char *config_file, struct confdb_ctx *cdb)
"Failed to convert time_t to string ??\n");
ret = errno ? errno : EFAULT;
}
- ret = confdb_get_string(cdb, tmp_ctx, "config", "lastUpdate",
- NULL, &lasttimestr);
- if (ret == EOK) {
-
- /* check if we lastUpdate and last file modification change differ*/
- if ((lasttimestr != NULL) && (strcmp(lasttimestr, timestr) == 0)) {
- /* not changed, get out, nothing more to do */
- ret = EOK;
- goto done;
- }
- } else {
- DEBUG(SSSDBG_FATAL_FAILURE, "Failed to get lastUpdate attribute.\n");
- goto done;
- }
- ret = sss_ini_get_config(init_data, config_file);
+ /* FIXME: Determine if the conf file or any snippet has changed
+ * since we last updated the confdb or if some snippet was
+ * added or removed.
+ */
+
+ ret = sss_ini_get_config(init_data, config_file, config_dir);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "Failed to load configuration\n");
goto done;
@@ -358,6 +346,7 @@ done:
errno_t confdb_setup(TALLOC_CTX *mem_ctx,
const char *cdb_file,
const char *config_file,
+ const char *config_dir,
struct confdb_ctx **_cdb)
{
TALLOC_CTX *tmp_ctx;
@@ -413,7 +402,7 @@ errno_t confdb_setup(TALLOC_CTX *mem_ctx,
goto done;
}
- ret = confdb_init_db(config_file, cdb);
+ ret = confdb_init_db(config_file, config_dir, cdb);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "ConfDB initialization has failed "
"[%d]: %s\n", ret, sss_strerror(ret));
diff --git a/src/confdb/confdb_setup.h b/src/confdb/confdb_setup.h
index 197673d29..9f647ec16 100644
--- a/src/confdb/confdb_setup.h
+++ b/src/confdb/confdb_setup.h
@@ -48,6 +48,7 @@
errno_t confdb_setup(TALLOC_CTX *mem_ctx,
const char *cdb_file,
const char *config_file,
+ const char *config_dir,
struct confdb_ctx **_cdb);
#endif /* CONFDB_SETUP_H_ */