diff options
author | Simo Sorce <simo@redhat.com> | 2016-03-28 15:22:35 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2016-04-05 14:34:14 -0400 |
commit | 5050b2d98f845311a2fb73707bae19904a2900da (patch) | |
tree | 5ceb3031085ff285f20f4658b886f6310c0d554b | |
parent | 4183a02c43eee1f74397e0f8eeedc7f66d2db46b (diff) | |
download | sssd-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.c | 24 | ||||
-rw-r--r-- | src/util/util.h | 1 |
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) |