This file is indexed.

/usr/share/php/Icinga/Cli/AnsiScreen.php is in php-icinga 2.4.1-1.

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
/* Icinga Web 2 | (c) 2013 Icinga Development Team | GPLv2+ */

namespace Icinga\Cli;

use Icinga\Cli\Screen;
use Icinga\Exception\IcingaException;

// @see http://en.wikipedia.org/wiki/ANSI_escape_code

class AnsiScreen extends Screen
{
    protected $fgColors = array(
        'black'       => '30',
        'darkgray'    => '1;30',
        'red'         => '31',
        'lightred'    => '1;31',
        'green'       => '32',
        'lightgreen'  => '1;32',
        'brown'       => '33',
        'yellow'      => '1;33',
        'blue'        => '34',
        'lightblue'   => '1;34',
        'purple'      => '35',
        'lightpurple' => '1;35',
        'cyan'        => '36',
        'lightcyan'   => '1;36',
        'lightgray'   => '37',
        'white'       => '1;37',
    );

    protected $bgColors = array(
        'black'     => '40',
        'red'       => '41',
        'green'     => '42',
        'brown'     => '43',
        'blue'      => '44',
        'purple'    => '45',
        'cyan'      => '46',
        'lightgray' => '47',
    );

    public function strlen($string)
    {
        return strlen($this->stripAnsiCodes($string));
    }

    public function stripAnsiCodes($string)
    {
        return preg_replace('/\e\[?.*?[\@-~]/', '', $string);
    }

    public function clear()
    {
        return "\033[2J"   // Clear the whole screen
             . "\033[1;1H" // Move the cursor to row 1, column 1
             . "\033[1S";  // Scroll whole page up by 1 line (why?)
    }

    public function underline($text)
    {
        return "\033[4m"
          . $text
          . "\033[0m"; // Reset color codes
    }

    public function colorize($text, $fgColor = null, $bgColor = null)
    {
        return $this->startColor($fgColor, $bgColor)
            . $text
            . "\033[0m"; // Reset color codes
    }

    protected function fgColor($color)
    {
        if (! array_key_exists($color, $this->fgColors)) {
            throw new IcingaException(
                'There is no such foreground color: %s',
                $color
            );
        }
        return $this->fgColors[$color];
    }

    protected function bgColor($color)
    {
        if (! array_key_exists($color, $this->bgColors)) {
            throw new IcingaException(
                'There is no such background color: %s',
                $color
            );
        }
        return $this->bgColors[$color];
    }

    protected function startColor($fgColor = null, $bgColor = null)
    {
        $escape = "ESC[";
        $parts = array();
        if ($fgColor !== null
            && $bgColor !== null
            && ! array_key_exists($bgColor, $this->bgColors)
            && array_key_exists($bgColor, $this->fgColors)
            && array_key_exists($fgColor, $this->bgColors)
        ) {
            $parts[] = '7'; // reverse video, negative image
            $parts[] = $this->bgColor($fgColor);
            $parts[] = $this->fgColor($bgColor);
        } else {
            if ($fgColor !== null) {
                $parts[] = $this->fgColor($fgColor);
            }
            if ($bgColor !== null) {
                $parts[] = $this->bgColor($bgColor);
            }
        }
        if (empty($parts)) {
            return '';
        }
        return "\033[" . implode(';', $parts) . 'm';
    }
}