mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 16:24:54 +02:00
Discovery modules (IPAM: DHCP)
Former-commit-id: 1849f6625fbd19dd2d6362d3ea20dc16ac73c29b
This commit is contained in:
parent
c0398dfa5b
commit
81a6584d1c
@ -594,6 +594,9 @@ sub process_xml_data ($$$$$) {
|
|||||||
|
|
||||||
# Process snmptrapd modules
|
# Process snmptrapd modules
|
||||||
enterprise_hook('process_snmptrap_data', [$pa_config, $data, $server_id, $dbh]);
|
enterprise_hook('process_snmptrap_data', [$pa_config, $data, $server_id, $dbh]);
|
||||||
|
|
||||||
|
# Process disovery modules
|
||||||
|
enterprise_hook('process_discovery_data', [$pa_config, $data, $server_id, $dbh]);
|
||||||
}
|
}
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
@ -47,6 +47,7 @@ our @EXPORT = qw(
|
|||||||
api_create_group
|
api_create_group
|
||||||
call_url
|
call_url
|
||||||
check_lib_version
|
check_lib_version
|
||||||
|
csv_to_obj
|
||||||
decrypt
|
decrypt
|
||||||
empty
|
empty
|
||||||
encrypt
|
encrypt
|
||||||
@ -67,6 +68,7 @@ our @EXPORT = qw(
|
|||||||
join_by_field
|
join_by_field
|
||||||
load_perl_modules
|
load_perl_modules
|
||||||
logger
|
logger
|
||||||
|
mask_to_decimal
|
||||||
merge_hashes
|
merge_hashes
|
||||||
parse_arguments
|
parse_arguments
|
||||||
parse_configuration
|
parse_configuration
|
||||||
@ -74,6 +76,7 @@ our @EXPORT = qw(
|
|||||||
process_performance
|
process_performance
|
||||||
post_url
|
post_url
|
||||||
print_agent
|
print_agent
|
||||||
|
print_discovery_module
|
||||||
print_error
|
print_error
|
||||||
print_execution_result
|
print_execution_result
|
||||||
print_message
|
print_message
|
||||||
@ -125,6 +128,31 @@ sub check_lib_version {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Convert CSV string to hash
|
||||||
|
################################################################################
|
||||||
|
sub csv_to_obj {
|
||||||
|
my ($csv) = @_;
|
||||||
|
my @ahr;
|
||||||
|
my @lines = split /\n/, $csv;
|
||||||
|
|
||||||
|
return [] unless $#lines >= 0;
|
||||||
|
|
||||||
|
# scan headers
|
||||||
|
my @hr_headers = split /,/, shift @lines;
|
||||||
|
|
||||||
|
# Clean \n\r
|
||||||
|
@hr_headers = map { $_ =~ s/\"//g; trim($_); } @hr_headers;
|
||||||
|
|
||||||
|
foreach my $line (@lines) {
|
||||||
|
my $i = 0;
|
||||||
|
my %hr = map { $_ =~ s/\"//g; $hr_headers[$i++] => trim($_) } split /,/, $line;
|
||||||
|
|
||||||
|
push @ahr, \%hr;
|
||||||
|
}
|
||||||
|
return \@ahr;
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Get current time (milis)
|
# Get current time (milis)
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -134,6 +162,25 @@ sub getCurrentUTimeMilis {
|
|||||||
return floor(time*1000);
|
return floor(time*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Mask to decimal
|
||||||
|
################################################################################
|
||||||
|
sub mask_to_decimal {
|
||||||
|
my $mask = shift;
|
||||||
|
my ($a,$b,$c,$d) = $mask =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
|
||||||
|
|
||||||
|
$a = sprintf "%08b", $a;
|
||||||
|
$b = sprintf "%08b", $b;
|
||||||
|
$c = sprintf "%08b", $c;
|
||||||
|
$d = sprintf "%08b", $d;
|
||||||
|
|
||||||
|
my $str = $a . $b . $c . $d;
|
||||||
|
|
||||||
|
$str =~ s/0.*$//;
|
||||||
|
|
||||||
|
return length($str);
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Mix hashses
|
# Mix hashses
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -442,8 +489,14 @@ sub print_agent {
|
|||||||
|
|
||||||
$xml .= ">";
|
$xml .= ">";
|
||||||
|
|
||||||
foreach my $module (@{$modules_def}) {
|
if (ref($modules_def) eq "ARRAY") {
|
||||||
$xml .= print_module($config, $module,1);
|
foreach my $module (@{$modules_def}) {
|
||||||
|
$xml .= print_module($config, $module,1);
|
||||||
|
}
|
||||||
|
} elsif (ref($modules_def) eq "HASH" && (defined $modules_def->{'name'})) {
|
||||||
|
$xml .= print_module($config, $modules_def,1);
|
||||||
|
} elsif (ref($modules_def) eq "HASH" && (defined $modules_def->{'discovery'})) {
|
||||||
|
$xml .= print_discovery_module($config, $modules_def,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
# print tail
|
# print tail
|
||||||
@ -457,6 +510,28 @@ sub print_agent {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# print_module
|
||||||
|
################################################################################
|
||||||
|
sub print_discovery_module {
|
||||||
|
my ($conf, $global_data, $not_print_flag) = @_;
|
||||||
|
|
||||||
|
return undef if (ref($global_data) ne "HASH" || !defined($global_data->{'discovery'}));
|
||||||
|
return "" if empty($global_data);
|
||||||
|
|
||||||
|
my $data = $global_data->{'discovery'};
|
||||||
|
|
||||||
|
my $xml_module = "<discovery><![CDATA[";
|
||||||
|
$xml_module .= encode_base64(encode_json($data));
|
||||||
|
$xml_module .= "]]></discovery>\n";
|
||||||
|
|
||||||
|
if (empty ($not_print_flag)) {
|
||||||
|
print $xml_module;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $xml_module;
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# print_module
|
# print_module
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -660,7 +735,7 @@ sub transfer_xml {
|
|||||||
my $file_path;
|
my $file_path;
|
||||||
|
|
||||||
if (! (empty ($name))) {
|
if (! (empty ($name))) {
|
||||||
$file_name = $name . "_" . time() . ".data";
|
$file_name = $name . "." . sprintf("%d",time()) . ".data";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# Inherit file name
|
# Inherit file name
|
||||||
@ -672,7 +747,7 @@ sub transfer_xml {
|
|||||||
$file_name = trim(`hostname`);
|
$file_name = trim(`hostname`);
|
||||||
}
|
}
|
||||||
|
|
||||||
$file_name .= "_" . time() . ".data";
|
$file_name .= "." . sprintf("%d",time()) . ".data";
|
||||||
}
|
}
|
||||||
|
|
||||||
logger($conf, "transfer_xml", "Failed to generate file name.") if empty($file_name);
|
logger($conf, "transfer_xml", "Failed to generate file name.") if empty($file_name);
|
||||||
@ -680,6 +755,8 @@ sub transfer_xml {
|
|||||||
$conf->{temp} = $conf->{tmp} if (empty($conf->{temp}) && defined($conf->{tmp}));
|
$conf->{temp} = $conf->{tmp} if (empty($conf->{temp}) && defined($conf->{tmp}));
|
||||||
$conf->{temp} = $conf->{temporal} if (empty($conf->{temp}) && defined($conf->{temporal}));
|
$conf->{temp} = $conf->{temporal} if (empty($conf->{temp}) && defined($conf->{temporal}));
|
||||||
$conf->{temp} = $conf->{__system}->{tmp} if (empty($conf->{temp}) && defined($conf->{__system})) && (ref($conf->{__system}) eq "HASH");
|
$conf->{temp} = $conf->{__system}->{tmp} if (empty($conf->{temp}) && defined($conf->{__system})) && (ref($conf->{__system}) eq "HASH");
|
||||||
|
$conf->{temp} = $ENV{'TMP'} if empty($conf->{temp}) && $^O =~ /win/i;
|
||||||
|
$conf->{temp} = '/tmp' if empty($conf->{temp}) && $^O =~ /lin/i;
|
||||||
|
|
||||||
$file_path = $conf->{temp} . "/" . $file_name;
|
$file_path = $conf->{temp} . "/" . $file_name;
|
||||||
|
|
||||||
@ -687,7 +764,7 @@ sub transfer_xml {
|
|||||||
|
|
||||||
if ( -e $file_path ) {
|
if ( -e $file_path ) {
|
||||||
sleep (1);
|
sleep (1);
|
||||||
$file_name = $name . "_" . time() . ".data";
|
$file_name = $name . "." . sprintf("%d",time()) . ".data";
|
||||||
$file_path = $conf->{temp} . "/" . $file_name;
|
$file_path = $conf->{temp} . "/" . $file_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2252,6 +2329,8 @@ sub decrypt {
|
|||||||
sub get_unix_time {
|
sub get_unix_time {
|
||||||
my ($str_time,$separator_dates,$separator_hours) = @_;
|
my ($str_time,$separator_dates,$separator_hours) = @_;
|
||||||
|
|
||||||
|
return 0 if empty($str_time);
|
||||||
|
|
||||||
if (empty($separator_dates)) {
|
if (empty($separator_dates)) {
|
||||||
$separator_dates = "\/";
|
$separator_dates = "\/";
|
||||||
}
|
}
|
||||||
@ -2260,10 +2339,15 @@ sub get_unix_time {
|
|||||||
$separator_hours = ":";
|
$separator_hours = ":";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $time;
|
||||||
use Time::Local;
|
eval {
|
||||||
my ($mday,$mon,$year,$hour,$min,$sec) = split(/[\s$separator_dates$separator_hours]+/, $str_time);
|
use Time::Local;
|
||||||
my $time = timelocal($sec,$min,$hour,$mday,$mon-1,$year);
|
my ($mday,$mon,$year,$hour,$min,$sec) = split(/[\s$separator_dates$separator_hours]+/, $str_time);
|
||||||
|
$time = timelocal($sec,$min,$hour,$mday,$mon-1,$year);
|
||||||
|
};
|
||||||
|
if ($@) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return $time;
|
return $time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user