From 89caa7758faf28e1d6c6429c7336d03e613bdc90 Mon Sep 17 00:00:00 2001 From: f0o Date: Wed, 15 Jul 2015 19:55:57 +0000 Subject: [PATCH] Added DeviceGroup-Macros --- includes/device-groups.inc.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/includes/device-groups.inc.php b/includes/device-groups.inc.php index 7f666c9929..0f42109d43 100644 --- a/includes/device-groups.inc.php +++ b/includes/device-groups.inc.php @@ -32,6 +32,10 @@ * @return string */ function GenGroupSQL($pattern, $search='') { + $pattern = RunGroupMacros($pattern); + if ($pattern === false) { + return false; + } $tmp = explode(' ', $pattern); $tables = array(); foreach ($tmp as $opt) { @@ -109,3 +113,27 @@ function GetGroupsFromDevice($device) { return $ret; }//end GetGroupsFromDevice() + +/** + * Process Macros + * @param string $rule Rule to process + * @param int $x Recursion-Anchor + * @return string|boolean + */ +function RunGroupMacros($rule,$x=1) { + global $config; + krsort($config['alert']['macros']['group']); + foreach( $config['alert']['macros']['group'] as $macro=>$value ) { + if( !strstr($macro," ") ) { + $rule = str_replace('%macros.'.$macro,'('.$value.')',$rule); + } + } + if( strstr($rule,"%macros") ) { + if( ++$x < 30 ) { + $rule = RunGroupMacros($rule,$x); + } else { + return false; + } + } + return $rule; +}//end RunGroupMacros()