This file is indexed.

/usr/share/icingaweb2/modules/monitoring/application/controllers/CommentsController.php is in icingaweb2-module-monitoring 2.1.0-1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
<?php
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */

namespace Icinga\Module\Monitoring\Controllers;

use Icinga\Data\Filter\Filter;
use Icinga\Module\Monitoring\Controller;
use Icinga\Module\Monitoring\Forms\Command\Object\DeleteCommentsCommandForm;
use Icinga\Web\Url;

/**
 * Display detailed information about comments
 */
class CommentsController extends Controller
{
    /**
     * The comments view
     *
     * @var \Icinga\Module\Monitoring\DataView\Comment
     */
    protected $comments;

    /**
     * Filter from request
     *
     * @var Filter
     */
    protected $filter;

    /**
     * Fetch all comments matching the current filter and add tabs
     */
    public function init()
    {
        $this->filter = Filter::fromQueryString(str_replace(
            'comment_id',
            'comment_internal_id',
            (string) $this->params
        ));
        $query = $this->backend->select()->from('comment', array(
            'id'         => 'comment_internal_id',
            'objecttype' => 'object_type',
            'comment'    => 'comment_data',
            'author'     => 'comment_author_name',
            'timestamp'  => 'comment_timestamp',
            'type'       => 'comment_type',
            'persistent' => 'comment_is_persistent',
            'expiration' => 'comment_expiration',
            'host_name',
            'service_description',
            'host_display_name',
            'service_display_name'
        ))->addFilter($this->filter);
        $this->applyRestriction('monitoring/filter/objects', $query);

        $this->comments = $query;

        $this->getTabs()->add(
            'comments',
            array(
                'icon'  => 'comment',
                'label' => $this->translate('Comments') . sprintf(' (%d)', $query->count()),
                'title' => $this->translate(
                    'Display detailed information about multiple comments.'
                ),
                'url'   =>'monitoring/comments/show'
            )
        )->activate('comments');
    }

    /**
     * Display the detail view for a comment list
     */
    public function showAction()
    {
        $this->view->comments = $this->comments;
        $this->view->listAllLink = Url::fromPath('monitoring/list/comments')
            ->setQueryString($this->filter->toQueryString());
        $this->view->removeAllLink = Url::fromPath('monitoring/comments/delete-all')
            ->setParams($this->params);
    }

    /**
     * Display the form for removing a comment list
     */
    public function deleteAllAction()
    {
        $this->assertPermission('monitoring/command/comment/delete');

        $listCommentsLink = Url::fromPath('monitoring/list/comments')
            ->setQueryString('comment_type=(comment|ack)');
        $delCommentForm = new DeleteCommentsCommandForm();
        $delCommentForm->setTitle($this->view->translate('Remove all Comments'));
        $delCommentForm->addDescription(sprintf(
            $this->translate('Confirm removal of %d comments.'),
            $this->comments->count()
        ));
        $delCommentForm->setComments($this->comments->fetchAll())
            ->setRedirectUrl($listCommentsLink)
            ->handleRequest();
        $this->view->delCommentForm = $delCommentForm;
        $this->view->comments = $this->comments;
        $this->view->listAllLink = Url::fromPath('monitoring/list/comments')
            ->setQueryString($this->filter->toQueryString());
    }
}