Module: check_mk
Branch: master
Commit: 20b3e0b73f76a6c3a57893a2f6da6420b5dcaa9a
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=20b3e0b73f76a6…
Author: Sergey Kipnis <sk(a)mathias-kettner.de>
Date: Wed Apr 17 15:23:55 2019 +0200
[CMK-1970] - REMOTE and REMOTE_HOST set now on connect
Change-Id: I4411acdca1a97b1df9274ffe4c16a4606505aa46
---
agents/wnx/src/common/cfg_info.h | 2 ++
agents/wnx/src/engine/cfg.cpp | 9 +++++++++
agents/wnx/src/engine/cfg.h | 4 ++++
agents/wnx/src/engine/eventlog/eventlogbase.h | 3 +--
agents/wnx/src/engine/service_processor.h | 24 +++++++++++-------------
5 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/agents/wnx/src/common/cfg_info.h b/agents/wnx/src/common/cfg_info.h
index 0b615f6..93707cd 100644
--- a/agents/wnx/src/common/cfg_info.h
+++ b/agents/wnx/src/common/cfg_info.h
@@ -166,6 +166,8 @@ constexpr const char* const kMkTempDirName = "MK_TEMPDIR";
constexpr const char* const kMkSpoolDirName = "MK_SPOOLDIR";
constexpr const char* const kMkPluginsDirName = "MK_PLUGINSDIR";
constexpr const char* const kMkLogDirName = "MK_LOGDIR";
+constexpr const char* const kRemoteHost = "REMOTE_HOST";
+constexpr const char* const kRemote = "REMOTE";
}; // namespace envs
diff --git a/agents/wnx/src/engine/cfg.cpp b/agents/wnx/src/engine/cfg.cpp
index 443a2c8..8d4093e 100644
--- a/agents/wnx/src/engine/cfg.cpp
+++ b/agents/wnx/src/engine/cfg.cpp
@@ -678,6 +678,15 @@ void SetupPluginEnvironment() {
cma::tools::win::SetEnv(d.first, wtools::ConvertToUTF8(d.second));
}
+// called upon every connection
+// required for some plugins using state file
+void SetupRemoteHostEnvironment(const std::string& IpAddress) {
+ using namespace cma::tools;
+
+ win::SetEnv(std::string(envs::kRemote), IpAddress);
+ win::SetEnv(std::string(envs::kRemoteHost), IpAddress);
+}
+
}; // namespace cma::cfg
namespace cma::cfg::details {
diff --git a/agents/wnx/src/engine/cfg.h b/agents/wnx/src/engine/cfg.h
index dd2001b..edd61f1 100644
--- a/agents/wnx/src/engine/cfg.h
+++ b/agents/wnx/src/engine/cfg.h
@@ -1022,8 +1022,12 @@ private:
void LoadExeUnitsFromYaml(std::vector<Plugins::ExeUnit>& ExeUnit,
const std::vector<YAML::Node> Yaml);
+// used to setup on start and forever. These environment variables are stable
void SetupPluginEnvironment();
+// called on every connect from monitoring site.
+void SetupRemoteHostEnvironment(const std::string& IpAddress);
+
namespace groups {
extern Global global;
extern WinPerf winperf;
diff --git a/agents/wnx/src/engine/eventlog/eventlogbase.h
b/agents/wnx/src/engine/eventlog/eventlogbase.h
index d2040b9..0125942 100644
--- a/agents/wnx/src/engine/eventlog/eventlogbase.h
+++ b/agents/wnx/src/engine/eventlog/eventlogbase.h
@@ -6,10 +6,9 @@
#include <memory>
#include <string>
-#include "fmt/format.h"
-
#include "common/cfg_info.h"
#include "common/wtools.h"
+#include "fmt/format.h"
namespace cma::evl {
class EventLogRecordBase {
diff --git a/agents/wnx/src/engine/service_processor.h
b/agents/wnx/src/engine/service_processor.h
index a9fa3b8..3bc5bae 100644
--- a/agents/wnx/src/engine/service_processor.h
+++ b/agents/wnx/src/engine/service_processor.h
@@ -13,21 +13,15 @@
#include <optional> //
#include <thread> //
+#include "async_answer.h"
+#include "carrier.h"
+#include "cfg.h"
#include "common/cfg_info.h"
#include "common/mailslot_transport.h"
#include "common/wtools.h"
-#include "tools/_xlog.h"
-
-#include "fmt/format.h"
-
#include "external_port.h"
-
-#include "async_answer.h"
-#include "carrier.h"
-#include "cfg.h"
+#include "fmt/format.h"
#include "logger.h"
-#include "read_file.h"
-
#include "providers/check_mk.h"
#include "providers/df.h"
#include "providers/fileinfo.h"
@@ -43,8 +37,9 @@
#include "providers/spool.h"
#include "providers/system_time.h"
#include "providers/wmi.h"
-
+#include "read_file.h"
#include "realtime.h"
+#include "tools/_xlog.h"
namespace cma::srv {
// mini processes of the global type
@@ -265,10 +260,13 @@ private:
// this is internal implementation of the io_context
// called upon kicking in port, i.e. LATER. NOT NOW.
- using namespace std::chrono;
- XLOG::d.i("Connected from {} ", Ip.c_str());
+ // 1. preparation
+ XLOG::d.i("Connected from '{}'", Ip.c_str());
cma::OnStartApp();
+ cma::cfg::SetupRemoteHostEnvironment(Ip);
informDevice(rt_device, Ip);
+
+ // 2. processing
auto tp = openAnswer(Ip);
if (tp) {
XLOG::d.i("Id is [{}] ",