summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2016-03-28 15:22:35 -0400
committerSimo Sorce <simo@redhat.com>2016-04-05 14:34:14 -0400
commit5050b2d98f845311a2fb73707bae19904a2900da (patch)
tree5ceb3031085ff285f20f4658b886f6310c0d554b
parent4183a02c43eee1f74397e0f8eeedc7f66d2db46b (diff)
downloadsssd-secsrv.tar.gz
sssd-secsrv.tar.xz
sssd-secsrv.zip
Monitor: Add mode to generate confdb onlysecsrv
With this mode we can add socket activated services and have systemd pre exec sssd to genrate the configuration file w/o starting the whole sssd if not necessary. Resolves: https://fedorahosted.org/sssd/ticket/XXXX
-rw-r--r--src/monitor/monitor.c24
-rw-r--r--src/util/util.h1
2 files changed, 22 insertions, 3 deletions
diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index 6a0707f0..db793613 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -2809,6 +2809,7 @@ int main(int argc, const char *argv[])
poptContext pc;
int opt_daemon = 0;
int opt_interactive = 0;
+ int opt_genconf = 0;
int opt_version = 0;
char *opt_config_file = NULL;
char *config_file = NULL;
@@ -2828,8 +2829,11 @@ int main(int argc, const char *argv[])
_("Run interactive (not a daemon)"), NULL}, \
{"config", 'c', POPT_ARG_STRING, &opt_config_file, 0, \
_("Specify a non-default config file"), NULL}, \
- {"version", '\0', POPT_ARG_NONE, &opt_version, 0, \
- _("Print version number and exit"), NULL }, \
+ {"genconf", 'g', POPT_ARG_NONE, &opt_genconf, 0, \
+ _("Refresh the configuration database, then exit"), \
+ NULL}, \
+ {"version", '\0', POPT_ARG_NONE, &opt_version, 0, \
+ _("Print version number and exit"), NULL }, \
POPT_TABLEEND
};
@@ -2867,7 +2871,13 @@ int main(int argc, const char *argv[])
return 1;
}
- if (!opt_daemon && !opt_interactive) {
+ if (opt_genconf && (opt_daemon || opt_interactive)) {
+ fprintf(stderr, "Option -g is incompatible with -D or -i\n");
+ poptPrintUsage(pc, stderr, 0);
+ return 1;
+ }
+
+ if (!opt_daemon && !opt_interactive && !opt_genconf) {
opt_daemon = 1;
}
@@ -2891,6 +2901,10 @@ int main(int argc, const char *argv[])
flags |= FLAGS_INTERACTIVE;
debug_to_stderr = 1;
}
+ if (opt_genconf) {
+ flags |= FLAGS_GEN_CONF;
+ debug_to_stderr = 1;
+ }
if (opt_config_file) {
config_file = talloc_strdup(tmp_ctx, opt_config_file);
@@ -2996,6 +3010,10 @@ int main(int argc, const char *argv[])
return 4;
}
+ /* at this point we are done generating the config file, we may exit
+ * if that's all we were asked to do */
+ if (opt_genconf) return 0;
+
/* set up things like debug , signals, daemonization, etc... */
monitor->conf_path = CONFDB_MONITOR_CONF_ENTRY;
ret = close(STDIN_FILENO);
diff --git a/src/util/util.h b/src/util/util.h
index dd394514..f37047a9 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -83,6 +83,7 @@
#define FLAGS_DAEMON 0x0001
#define FLAGS_INTERACTIVE 0x0002
#define FLAGS_PID_FILE 0x0004
+#define FLAGS_GEN_CONF 0x0008
#ifndef talloc_zfree
#define talloc_zfree(ptr) do { talloc_free(discard_const(ptr)); ptr = NULL; } while(0)