mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-28 16:14:09 +02:00
parent
de6696f92b
commit
33e5a839db
@ -215,16 +215,48 @@ Value HostsTable::CheckCommandAccessor(const Value& row)
|
|||||||
Value HostsTable::CheckCommandExpandedAccessor(const Value& row)
|
Value HostsTable::CheckCommandExpandedAccessor(const Value& row)
|
||||||
{
|
{
|
||||||
/* use hostcheck service */
|
/* use hostcheck service */
|
||||||
Service::Ptr hc = static_cast<Host::Ptr>(row)->GetHostCheckService();
|
Host::Ptr host = static_cast<Host::Ptr>(row);
|
||||||
|
Service::Ptr hc = host->GetHostCheckService();
|
||||||
|
|
||||||
if (!hc)
|
if (!hc)
|
||||||
return Empty;
|
return Empty;
|
||||||
|
|
||||||
CheckCommand::Ptr checkcommand = hc->GetCheckCommand();
|
CheckCommand::Ptr commandObj = hc->GetCheckCommand();
|
||||||
if (checkcommand)
|
|
||||||
return checkcommand->GetName(); /* this is the name without '!' args */
|
|
||||||
|
|
||||||
|
if (!commandObj)
|
||||||
return Empty;
|
return Empty;
|
||||||
|
|
||||||
|
Value raw_command = commandObj->GetCommandLine();
|
||||||
|
|
||||||
|
std::vector<MacroResolver::Ptr> resolvers;
|
||||||
|
resolvers.push_back(commandObj);
|
||||||
|
resolvers.push_back(hc);
|
||||||
|
resolvers.push_back(host);
|
||||||
|
resolvers.push_back(IcingaApplication::GetInstance());
|
||||||
|
|
||||||
|
Value commandLine = MacroProcessor::ResolveMacros(raw_command, resolvers, Dictionary::Ptr(), Utility::EscapeShellCmd);
|
||||||
|
|
||||||
|
String buf;
|
||||||
|
if (commandLine.IsObjectType<Array>()) {
|
||||||
|
Array::Ptr args = commandLine;
|
||||||
|
|
||||||
|
ObjectLock olock(args);
|
||||||
|
String arg;
|
||||||
|
BOOST_FOREACH(arg, args) {
|
||||||
|
// This is obviously incorrect for non-trivial cases.
|
||||||
|
String argitem = " \"" + arg + "\"";
|
||||||
|
boost::algorithm::replace_all(argitem, "\n", "\\n");
|
||||||
|
buf += argitem;
|
||||||
|
}
|
||||||
|
} else if (!commandLine.IsEmpty()) {
|
||||||
|
String args = Convert::ToString(commandLine);
|
||||||
|
boost::algorithm::replace_all(args, "\n", "\\n");
|
||||||
|
buf += args;
|
||||||
|
} else {
|
||||||
|
buf += "<internal>";
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
Value HostsTable::EventHandlerAccessor(const Value& row)
|
Value HostsTable::EventHandlerAccessor(const Value& row)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user