mirror of https://github.com/Icinga/icinga2.git
parent
a416987031
commit
6a080edf80
|
@ -60,10 +60,16 @@ bool AttributeFilter::Apply(const Table::Ptr& table, const Value& row)
|
||||||
else
|
else
|
||||||
return (static_cast<String>(value) == m_Operand);
|
return (static_cast<String>(value) == m_Operand);
|
||||||
} else if (m_Operator == "~") {
|
} else if (m_Operator == "~") {
|
||||||
|
bool ret;
|
||||||
|
try {
|
||||||
boost::regex expr(m_Operand.GetData());
|
boost::regex expr(m_Operand.GetData());
|
||||||
String operand = value;
|
String operand = value;
|
||||||
boost::smatch what;
|
boost::smatch what;
|
||||||
bool ret = boost::regex_search(operand.GetData(), what, expr);
|
ret = boost::regex_search(operand.GetData(), what, expr);
|
||||||
|
} catch (boost::exception&) {
|
||||||
|
Log(LogWarning, "AttributeFilter", "Regex '" + m_Operand + " " + m_Operator + " " + Convert::ToString(value) + "' error.");
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
|
||||||
//Log(LogDebug, "LivestatusListener/AttributeFilter", "Attribute filter '" + m_Operand + " " + m_Operator + " " +
|
//Log(LogDebug, "LivestatusListener/AttributeFilter", "Attribute filter '" + m_Operand + " " + m_Operator + " " +
|
||||||
// static_cast<String>(value) + "' " + (ret ? "matches" : "doesn't match") + "." );
|
// static_cast<String>(value) + "' " + (ret ? "matches" : "doesn't match") + "." );
|
||||||
|
@ -72,10 +78,16 @@ bool AttributeFilter::Apply(const Table::Ptr& table, const Value& row)
|
||||||
} else if (m_Operator == "=~") {
|
} else if (m_Operator == "=~") {
|
||||||
return string_iless()(value, m_Operand);
|
return string_iless()(value, m_Operand);
|
||||||
} else if (m_Operator == "~~") {
|
} else if (m_Operator == "~~") {
|
||||||
|
bool ret;
|
||||||
|
try {
|
||||||
boost::regex expr(m_Operand.GetData(), boost::regex::icase);
|
boost::regex expr(m_Operand.GetData(), boost::regex::icase);
|
||||||
String operand = value;
|
String operand = value;
|
||||||
boost::smatch what;
|
boost::smatch what;
|
||||||
bool ret = boost::regex_search(operand.GetData(), what, expr);
|
ret = boost::regex_search(operand.GetData(), what, expr);
|
||||||
|
} catch (boost::exception&) {
|
||||||
|
Log(LogWarning, "AttributeFilter", "Regex '" + m_Operand + " " + m_Operator + " " + Convert::ToString(value) + "' error.");
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
|
||||||
//Log(LogDebug, "LivestatusListener/AttributeFilter", "Attribute filter '" + m_Operand + " " + m_Operator + " " +
|
//Log(LogDebug, "LivestatusListener/AttributeFilter", "Attribute filter '" + m_Operand + " " + m_Operator + " " +
|
||||||
// static_cast<String>(value) + "' " + (ret ? "matches" : "doesn't match") + "." );
|
// static_cast<String>(value) + "' " + (ret ? "matches" : "doesn't match") + "." );
|
||||||
|
|
|
@ -43,9 +43,16 @@ REGISTER_SCRIPTFUNCTION(exit, &ScriptUtils::Exit);
|
||||||
|
|
||||||
bool ScriptUtils::Regex(const String& pattern, const String& text)
|
bool ScriptUtils::Regex(const String& pattern, const String& text)
|
||||||
{
|
{
|
||||||
|
bool res = false;
|
||||||
|
try {
|
||||||
boost::regex expr(pattern.GetData());
|
boost::regex expr(pattern.GetData());
|
||||||
boost::smatch what;
|
boost::smatch what;
|
||||||
return boost::regex_search(text.GetData(), what, expr);
|
res = boost::regex_search(text.GetData(), what, expr);
|
||||||
|
} catch (boost::exception&) {
|
||||||
|
res = false; /* exception means something went terribly wrong */
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ScriptUtils::Len(const Value& value)
|
int ScriptUtils::Len(const Value& value)
|
||||||
|
|
Loading…
Reference in New Issue