mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Don't escape single quotes in alert templates so that we can compare strings in if statements
This commit is contained in:
14
alerts.php
14
alerts.php
@ -359,6 +359,18 @@ function ExtTransports($obj) {
|
||||
}//end ExtTransports()
|
||||
|
||||
|
||||
/**
|
||||
* Escape certain characters in template string
|
||||
* @param string $tpl Template
|
||||
* @return string
|
||||
*/
|
||||
function TplEscape($tpl) {
|
||||
// theoretically like addslashes(), but don't escape single quote (') and do escape $
|
||||
// FIXME: is there still a way to break out of the double-quoted string, maybe with a unicode char?
|
||||
return preg_replace('(["\\\\$\\0])','\\0',$tpl);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Format Alert
|
||||
* @param array $obj Alert-Array
|
||||
@ -366,7 +378,7 @@ function ExtTransports($obj) {
|
||||
*/
|
||||
function FormatAlertTpl($obj) {
|
||||
$tpl = $obj["template"];
|
||||
$msg = '$ret .= "'.str_replace(array('{else}', '{/if}', '{/foreach}'), array('"; } else { $ret .= "', '"; } $ret .= "', '"; } $ret .= "'), addslashes($tpl)).'";';
|
||||
$msg = '$ret .= "'.str_replace(array('{else}', '{/if}', '{/foreach}'), array('"; } else { $ret .= "', '"; } $ret .= "', '"; } $ret .= "'), TplEscape($tpl)).'";';
|
||||
$parsed = $msg;
|
||||
$s = strlen($msg);
|
||||
$x = $pos = -1;
|
||||
|
Reference in New Issue
Block a user