This file is indexed.

/usr/share/perl5/Rex/Interface/Shell.pm is in rex 1.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
#
# (c) Jan Gehring <jan.gehring@gmail.com>
#
# vim: set ts=2 sw=2 tw=0:
# vim: set expandtab:

package Rex::Interface::Shell;

use strict;
use warnings;

our $VERSION = '1.4.1'; # VERSION

use Rex::Logger;

my %SHELL_PROVIDER = (
  ash   => "Rex::Interface::Shell::Ash",
  bash  => "Rex::Interface::Shell::Bash",
  csh   => "Rex::Interface::Shell::Csh",
  idrac => "Rex::Interface::Shell::Idrac",
  ksh   => "Rex::Interface::Shell::Ksh",
  sh    => "Rex::Interface::Shell::Sh",
  tcsh  => "Rex::Interface::Shell::Tcsh",
  zsh   => "Rex::Interface::Shell::Zsh",
);

sub register_shell_provider {
  my ( $class, $shell_name, $shell_class ) = @_;
  $SHELL_PROVIDER{"\L$shell_name"} = $shell_class;
  return 1;
}

sub get_shell_provider {
  return %SHELL_PROVIDER;
}

sub create {
  my ( $class, $shell ) = @_;

  $shell =~ s/[\r\n]//gms; # sometimes there are some wired things...

  my $klass = "Rex::Interface::Shell::\u$shell";
  eval "use $klass";
  if ($@) {
    Rex::Logger::info(
      "Can't load wanted shell: '$shell' ('$klass'). Using default shell.",
      "warn" );
    Rex::Logger::info(
      "If you want to help the development of Rex please report this issue in our Github issue tracker.",
      "warn"
    );
    $klass = "Rex::Interface::Shell::Default";
    eval "use $klass";
  }

  return $klass->new;
}

1;