From a5fbb5b41765fa12ea8da3cb6f7837325d3bb3d9 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Thu, 15 Sep 2022 11:17:26 +0000 Subject: be more careful about splunk start/stop * validate the configurable splunk-home * do stopping via C++ program instead of shell command * some refactoring of C++ code as well --- .../src/apps/vespa-logforwarder-start/main.cpp | 33 ++++++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'logforwarder/src/apps/vespa-logforwarder-start/main.cpp') diff --git a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp index 33fe4489811..d24c9c982a1 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp +++ b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp @@ -6,7 +6,8 @@ #include LOG_SETUP("vespa-logforwarder-start"); -#include "cf-handler.h" +#include "splunk-starter.h" +#include "splunk-stopper.h" #include class Wrapper { @@ -15,7 +16,7 @@ public: Wrapper(const char *cfid) : _configId(cfid) {} void run() { vespalib::SigCatch catcher; - CfHandler handler; + SplunkStarter handler; handler.start(_configId); while (! catcher.receivedStopSignal()) { handler.check(); @@ -28,12 +29,32 @@ public: int main(int argc, char** argv) { - int c = getopt(argc, argv, "c:"); - if (c != 'c') { + int c = -1; + bool stopMode = false; + const char *cfid = nullptr; + while ((c = getopt(argc, argv, "Sc:")) != -1) { + switch (c) { + case 'S': + stopMode = true; + break; + case 'c': + cfid = optarg; + break; + default: + cfid = nullptr; + break; + } + } + if (cfid == nullptr) { LOG(error, "Usage: %s -c ", argv[0]); return EXIT_FAILURE; } - Wrapper wrapper(optarg); - wrapper.run(); + if (stopMode) { + SplunkStopper stopper(cfid); + stopper.check(); + } else { + Wrapper wrapper(cfid); + wrapper.run(); + } return 0; } -- cgit v1.2.3