mirror of https://github.com/Icinga/icinga2.git
132 lines
3.3 KiB
Perl
132 lines
3.3 KiB
Perl
|
|
=pod
|
|
/******************************************************************************
|
|
* Icinga 2 *
|
|
* Copyright (C) 2012 Icinga Development Team (http://www.icinga.org/) *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU General Public License *
|
|
* as published by the Free Software Foundation; either version 2 *
|
|
* of the License, or (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the Free Software Foundation *
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
|
******************************************************************************/
|
|
=cut
|
|
|
|
|
|
package Icinga2::Utils;
|
|
|
|
use strict;
|
|
#use Icinga2;
|
|
|
|
our $dbg_lvl;
|
|
|
|
################################################################################
|
|
# HELPER FUNCTIONS
|
|
################################################################################
|
|
|
|
sub strip {
|
|
my $str = shift;
|
|
|
|
#strip trailing and leading whitespaces
|
|
$str =~ s/^\s+//;
|
|
$str =~ s/\s+$//;
|
|
|
|
return $str;
|
|
}
|
|
|
|
sub errlog {
|
|
my $err_lvl = shift;
|
|
my $log_str = shift;
|
|
|
|
if ($err_lvl > 0) {
|
|
print STDERR color("red"), "$log_str\n";;
|
|
} else {
|
|
print "$log_str\n";
|
|
}
|
|
|
|
}
|
|
|
|
sub escape_str {
|
|
my $str = shift;
|
|
|
|
$str =~ s/"/\\"/g;
|
|
$str =~ s/\\\\"/\\"/g;
|
|
|
|
return $str;
|
|
}
|
|
sub escape_shell_meta {
|
|
my $str = shift;
|
|
|
|
$str =~ s/([;<>`'":&!#\$\[\]\{\}\(\)\*\|])/\\$1/g;
|
|
return $str;
|
|
}
|
|
|
|
sub debug {
|
|
my $dbg_str = shift;
|
|
our $dbg_lvl;
|
|
|
|
if ($dbg_lvl > 0) {
|
|
print "$dbg_str\n";
|
|
}
|
|
}
|
|
|
|
sub slurp {
|
|
my $file = shift;
|
|
|
|
if ( -f $file ) {
|
|
open ( my $fh, "<", $file ) or die "Could not open $file: $!";
|
|
return do {
|
|
<$fh>;
|
|
}
|
|
} elsif (! -r $file) {
|
|
print " ERROR: $file not readable. check permissions/user!\n"
|
|
} else {
|
|
print " ERROR: $file does not exist\n";
|
|
}
|
|
}
|
|
|
|
# stolen from http://stackoverflow.com/questions/7651/how-do-i-remove-duplicate-items-from-an-array-in-perl
|
|
sub uniq {
|
|
return keys %{{ map { $_ => 1 } @_ }};
|
|
}
|
|
|
|
sub str2arr_by_delim_without_excludes {
|
|
my $str = shift;
|
|
my $delim = shift;
|
|
my $sort = shift;
|
|
my $exclude = shift;
|
|
my @arr = ();
|
|
|
|
@arr = map { s/^\s+//; s/\s+$//; $_ }
|
|
grep { !/^!/ }
|
|
split (/$delim/, $str);
|
|
|
|
if ($sort == 1) {
|
|
@arr = sort (@arr);
|
|
}
|
|
|
|
return @arr;
|
|
}
|
|
|
|
sub strip_object_name {
|
|
my $obj_str = shift;
|
|
|
|
#$obj_str =~ s/[`~!\\\$%\^&\*|'"<>\?,\(\)=:]/_/g;
|
|
$obj_str =~ s/[:]/_/g;
|
|
|
|
return $obj_str;
|
|
}
|
|
|
|
1;
|
|
|
|
__END__
|
|
# vi: sw=4 ts=4 expandtab :
|