@@ -34,7 +34,6 @@ use Munin::Node::Service;
34
34
35
35
use English qw( -no_match_vars) ;
36
36
37
- my $services ;
38
37
my $servicedir ;
39
38
my $conffile = " $Munin::Common::Defaults::MUNIN_CONFDIR /munin-node.conf" ;
40
39
my $DEBUG = 0;
@@ -44,31 +43,29 @@ my $paranoia = 0;
44
43
45
44
my $config = Munin::Node::Config-> instance();
46
45
47
- sub main
48
- {
49
- my ($plugin , $arg ) = parse_args();
46
+ sub main {
47
+ my ( $plugin , $arg ) = parse_args();
50
48
51
49
# Loads the settings from munin-node.conf.
52
50
# Ensures that, where options can be set both in the config and in
53
51
# @ARGV, the latter takes precedence.
54
52
$paranoia = $config -> {paranoia };
55
53
56
- my $config = Munin::Node::Config-> instance();
57
54
$config -> parse_config_from_file($conffile );
58
55
59
- $services = Munin::Node::Service-> new(
56
+ my $services = Munin::Node::Service-> new(
60
57
servicedir => $servicedir ,
61
58
defuser => $config -> {defuser },
62
59
defgroup => $config -> {defgroup },
63
60
pidebug => $PIDEBUG ,
64
61
);
65
62
66
- $config -> reinitialize({
67
- %$config ,
68
- paranoia => $paranoia ,
69
- });
63
+ $config -> reinitialize( {
64
+ %{ $config }, # # no critic qw(ValuesAndExpressions::ProhibitCommaSeparatedStatements)
65
+ paranoia => $paranoia ,
66
+ } );
70
67
71
- unless ($services -> is_a_runnable_service($plugin )) {
68
+ unless ( $services -> is_a_runnable_service($plugin ) ) {
72
69
print STDERR " # Unknown service '$plugin '\n " ;
73
70
exit 1;
74
71
}
@@ -77,78 +74,81 @@ sub main
77
74
78
75
# no need for a timeout -- the user can kill this process any
79
76
# time they want.
80
- $services -> exec_service($plugin , $arg );
77
+ $services -> exec_service( $plugin , $arg );
81
78
82
79
# Never reached, but just in case...
83
80
print STDERR " # FATAL: Failed to exec.\n " ;
84
81
exit 42;
85
82
}
86
83
87
84
88
- sub parse_args
89
- {
85
+ sub parse_args {
86
+
90
87
# Default configuration values
91
- my $sconfdir = " $Munin::Common::Defaults::MUNIN_CONFDIR /plugin-conf.d" ;
88
+ my $sconfdir = " $Munin::Common::Defaults::MUNIN_CONFDIR /plugin-conf.d" ;
92
89
my $sconffile ;
93
90
94
- my ($plugin , $arg );
95
-
96
- print_usage_and_exit() unless GetOptions(
97
- " config=s" => \$conffile ,
98
- " debug!" => \$DEBUG ,
99
- " verbose!" => \$VERBOSE ,
100
- " pidebug!" => \$PIDEBUG ,
101
- " servicedir=s" => \$servicedir ,
102
- " sconfdir=s" => \$sconfdir ,
103
- " sconffile=s" => \$sconffile ,
104
- " paranoia!" => \$paranoia ,
105
- " version" => \&print_version_and_exit,
106
- " help" => \&print_usage_and_exit,
107
- );
91
+ my ( $plugin , $arg );
92
+
93
+ print_usage_and_exit()
94
+ unless GetOptions(
95
+ " config=s" => \$conffile ,
96
+ " debug!" => \$DEBUG ,
97
+ " verbose!" => \$VERBOSE ,
98
+ " pidebug!" => \$PIDEBUG ,
99
+ " servicedir=s" => \$servicedir ,
100
+ " sconfdir=s" => \$sconfdir ,
101
+ " sconffile=s" => \$sconffile ,
102
+ " paranoia!" => \$paranoia ,
103
+ " version" => \&print_version_and_exit,
104
+ " help" => \&print_usage_and_exit,
105
+ );
108
106
109
107
print_usage_and_exit() unless $ARGV [0];
110
108
111
109
# Detaint the plugin name
112
- ($plugin ) = ($ARGV [0] =~ m / ^([-\w .:]+)$ / ) or die " # ERROR: Invalid plugin name '$ARGV [0].\n " ;
113
- if ($ARGV [1]) {
114
- ($arg ) = ($ARGV [1] =~ m / ^(\w +)$ / )
115
- or die " # ERROR: Invalid characters in argument '$ARGV [1]'.\n " ;
110
+ ($plugin ) = ( $ARGV [0] =~ m / ^([-\w .:]+)$ / x )
111
+ or die " # ERROR: Invalid plugin name '$ARGV [0]'.\n " ;
112
+ if ( $ARGV [1] ) {
113
+ ($arg ) = ( $ARGV [1] =~ m / ^(\w +)$ / x )
114
+ or die " # ERROR: Invalid characters in argument '$ARGV [1]'.\n " ;
115
+ die " # ERROR: Invalid plugin argument '$ARGV [1]'.\n "
116
+ unless grep ( / ^$ARGV [1]$ /x , qw( autoconf config suggest) );
116
117
}
117
118
118
- # Detaint service directory. FIXME: do more strict detainting?
119
+ # Detaint service directory.
119
120
if ($servicedir ) {
120
- $servicedir =~ / (.*)/ ;
121
- $servicedir = $1 ;
121
+ die " # ERROR: Invalid servicedir supplied.\n " unless -d $servicedir ;
122
+ $servicedir =~ / (.*)/x ;
123
+ $servicedir = $1 ; # # no critic qw(RegularExpressions::ProhibitCaptureWithoutTest)
122
124
}
123
125
124
126
# Update the config
125
- $config -> reinitialize({
126
- % $config,
127
-
128
- sconfdir => $sconfdir ,
129
- conffile => $conffile ,
130
- sconffile => $sconffile ,
131
- VERBOSE => $VERBOSE ,
132
- DEBUG => $DEBUG ,
133
- paranoia => $paranoia ,
134
- });
135
-
136
- return ($plugin , $arg );
127
+ $config -> reinitialize( {
128
+ %{ $config }, # # no critic qw(ValuesAndExpressions::ProhibitCommaSeparatedStatements)
129
+
130
+ sconfdir => $sconfdir ,
131
+ conffile => $conffile ,
132
+ sconffile => $sconffile ,
133
+ VERBOSE => $VERBOSE ,
134
+ DEBUG => $DEBUG ,
135
+ paranoia => $paranoia ,
136
+ } );
137
+
138
+ return ( $plugin , $arg );
137
139
}
138
140
139
141
140
- sub print_usage_and_exit
141
- {
142
+ sub print_usage_and_exit {
142
143
require Pod::Usage;
143
- Pod::Usage::pod2usage(-verbose => 1);
144
+ Pod::Usage::pod2usage( -verbose => 1 );
144
145
}
145
146
146
147
147
- sub print_version_and_exit
148
- {
148
+ sub print_version_and_exit {
149
149
require Pod::Usage;
150
150
Pod::Usage::pod2usage(
151
- -verbose => 99,
151
+ -verbose => 99,
152
152
-sections => ' VERSION|COPYRIGHT' ,
153
153
);
154
154
}
0 commit comments