This file is indexed.

/usr/share/perl5/Munin/Common/Config.pm is in munin-common 2.0.19-3.

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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
package Munin::Common::Config;

# $Id$

use warnings;
use strict;

use Carp;
use English qw(-no_match_vars);

# Functions here are unable to log as they don't know if they're used
# by the node or the master which use divergent logging facilities.
# In fact, the list in %legal is only used by the master.

my %legal = map { $_ => 1 } qw(
	address
	always_send
	category_order
	cdef
	cdef_name
	cgitmpdir
	cgiurl
	cgiurl_graph
	colour
	command
	compare
	contact
	contacts
	create_args
	critical
	dbdir
	domain_order
	draw
	dropdownlimit
	extinfo
	fetch_data
	filename
	fork
	graph
	graph
	graphable
	graph_args
	graph_args_after
	graph_category
	graph_data_size
	graph_future
	graph_height
	graph_info
	graph_noscale
	graph_order
	graph_period
	graph_printf
	graph_scale
	graph_sources
	graph_strategy
	graph_sums
	graph_title
	graph_total
	graph_vlabel
	graph_vtitle
	graph_width
	group_order
	host_name
	htaccess
	htmldir
	html_rename
	html_strategy
	includedir
	info
	label
	line
	local_address
	logdir
	max
	max_cgi_graph_jobs
	max_graph_jobs
	max_html_jobs
	max_messages
	max_processes
	max_size_x
	max_size_y
	min
	munin_cgi_graph_jobs
	nagios
	ncsa
	ncsa_config
	ncsa_server
	negative
	node_order
	notify_alias
	nsca
	nsca_config
	nsca_server
	num_messages
	num_unknowns
	ok
	onlynullcdef
	palette
	pipe
	pipe_command
	port
	predict
	process
	realname
	realservname
	rrdcached_socket
	rundir
	service_order
	skipdraw
	stack
	state
	staticdir
	sum
	text
	timeout
	tls
	tls_ca_certificate
	tls_certificate
	tls_match
	tls_pem
	tls_private_key
	tls_verify_certificate
	tls_verify_depth
	tmpldir
	trend
	type
	unknown
	unknown_limit
	update
	update_rate
	use_default_name
	use_node_name
	version
	warn
	warning
	worker_start_delay
);

my %bools = map { $_ => 1} qw(yes no true false on off 1 0);

sub cl_is_keyword {
    # Class-less version of is_keyword for legacy code.
    my ($word) = @_;

    return defined $legal{$word};
}


sub is_keyword {
    my ($self, $word) = @_;

    return defined $legal{$word};
}


sub parse_config_from_file {
    my ($self, $config_file) = @_;

    $config_file ||= $self->{config_file};

    open my $file, '<', $config_file
        or croak "ERROR: Cannot open '$config_file': $OS_ERROR";

    # Note, parse_config is provided by node or master specific config class
    eval {
        $self->parse_config($file);
    };
    if ($EVAL_ERROR) {
        croak "ERROR: Failed to parse config file '$config_file': $EVAL_ERROR";
    }

    close $file
        or croak "Cannot close '$config_file': $OS_ERROR";
}


sub _trim {
    # Trim leading and trailing whitespace.
    my $class = shift;

    chomp $_[0];
    $_[0] =~ s/^\s+//;
    $_[0] =~ s/\s+$//;

    return;
}


# allows # characters to get through as long as they're escaped
# with a backslash
sub _strip_comment {
    my $class = shift;

    $_[0] =~ s/(?<!\\)#.*//;
    $_[0] =~ s/\\#/#/g;

    return;
}


sub _looks_like_a_bool {
    my ($class, $str) = @_;

    return $bools{lc $str};
}


sub _parse_bool {
    my ($class, $str) = @_;

    croak "Parse exception: '$str' is not a boolean."
        unless $class->_looks_like_a_bool($str);

    return $str =~ m{\A no|false|off|0 \z}xi ? 0 : 1;
}


1;


__END__

=head1 NAME

Munin::Common::Config - Abstract base class for common config code.

=head1 SYNOPSIS

Don't use it directly. See L<Munin::Master::Config> and L<Munin::Node::Config>.

=head1 METHODS

=over

=item B<parse_config_from_file>

 $config->parse_config_from_file($file_name);

Parses the configuration in $file_name.

=back