Escape linefeeds and carriage returns in commands and show them as html

fixes #6088
This commit is contained in:
Johannes Meyer 2014-08-14 10:23:04 +02:00
parent 666591beb7
commit dc8181cdc5
3 changed files with 20 additions and 10 deletions

View File

@ -109,7 +109,19 @@ class CommandPipe
*/ */
public function send($command) public function send($command)
{ {
$this->transport->send($command); $this->transport->send($this->escape($command));
}
/**
* Return the given command string with escaped newlines
*
* @param string $command The command string to escape
*
* @return string The escaped command string
*/
public function escape($command)
{
return str_replace(array("\r", "\n"), array('\r', '\n'), $command);
} }
/** /**
@ -121,16 +133,14 @@ class CommandPipe
public function sendCommand(Command $command, array $objects = array()) public function sendCommand(Command $command, array $objects = array())
{ {
if ($command->provideGlobalCommand() === true) { if ($command->provideGlobalCommand() === true) {
$this->transport->send($command->getGlobalCommand()); $this->send($command->getGlobalCommand());
} else { } else {
foreach ($objects as $object) { foreach ($objects as $object) {
$objectType = $this->getObjectType($object); $objectType = $this->getObjectType($object);
if ($objectType === self::TYPE_SERVICE) { if ($objectType === self::TYPE_SERVICE) {
$this->transport->send( $this->send($command->getServiceCommand($object->host_name, $object->service_description));
$command->getServiceCommand($object->host_name, $object->service_description)
);
} else { } else {
$this->transport->send($command->getHostCommand($object->host_name)); $this->send($command->getHostCommand($object->host_name));
} }
} }
} }

View File

@ -31,12 +31,12 @@ foreach ($object->comments as $comment) {
); );
$list[] = sprintf( $list[] = sprintf(
'<tr><th>%s (%s)</th><td data-base-target="_self">%s (%s) %s</td></tr>', '<tr><th>%s (%s)</th><td><table><tr><td style="vertical-align: top;" data-base-target="_self">%s (%s):</td><td style="padding-left: .5em;">%s</td></tr></table></td></tr>',
$this->escape($comment->author), $this->escape($comment->author),
$this->timeSince($comment->timestamp), $this->timeSince($comment->timestamp),
$iconForm, $iconForm,
ucfirst($comment->type), ucfirst($comment->type),
$text str_replace(array('\r\n', '\n'), '<br>', $text)
); );
} }

View File

@ -42,11 +42,11 @@ foreach ($object->downtimes as $downtime) {
) : $this->escape($downtime->comment); ) : $this->escape($downtime->comment);
$list[] = sprintf( $list[] = sprintf(
'<tr><th>%s</th><td data-base-target="_self">%s %s: %s</td></tr>', '<tr><th>%s</th><td><table><tr><td style="vertical-align: top;" data-base-target="_self">%s %s:</td><td style="padding-left: .5em;">%s</td></tr></table></td></tr>',
$this->escape($downtime->author), $this->escape($downtime->author),
$iconForm, $iconForm,
$state, $state,
$text str_replace(array('\r\n', '\n'), '<br>', $text)
); );
} }