Move the Recon module to PandoraFMS.

This commit is contained in:
Ramon Novoa 2017-03-13 11:13:45 +01:00
parent ed83c756e2
commit 4a0a9bbd37
4 changed files with 23 additions and 23 deletions

View File

@ -2,7 +2,7 @@
# (c) Ártica ST 2014 <info@artica.es>
# Module for network topology discovery.
package Recon::Base;
package PandoraFMS::Recon::Base;
use strict;
use warnings;
@ -11,8 +11,8 @@ use lib '/usr/lib/perl5';
use NetAddr::IP;
use POSIX qw/ceil/;
use Recon::NmapParser;
use Recon::Util;
use PandoraFMS::Recon::NmapParser;
use PandoraFMS::Recon::Util;
use Socket qw/inet_aton/;
# Some useful OIDs.
@ -1304,7 +1304,7 @@ sub traceroute_connectivity($$) {
# Perform a traceroute.
my $nmap_args = '-nsP -PE --traceroute --max-retries '.$self->{'icmp_checks'}.' --host-timeout '.$self->{'icmp_timeout'}.'s -T'.$self->{'recon_timing_template'};
my $np = Recon::NmapParser->new();
my $np = PandoraFMS::Recon::NmapParser->new();
eval {
$np->parsescan($self->{'nmap'}, $nmap_args, ($host));
};

View File

@ -22,7 +22,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
package Recon::NmapParser;
package PandoraFMS::Recon::NmapParser;
use strict;
use XML::Twig;

View File

@ -2,7 +2,7 @@
# (c) Ártica ST 2016 <info@artica.es>
# Utility functions for the network topology discovery modules.
package Recon::Util;
package PandoraFMS::Recon::Util;
use strict;
use warnings;

View File

@ -37,7 +37,7 @@ use PandoraFMS::DB;
use PandoraFMS::Core;
use PandoraFMS::ProducerConsumerServer;
use PandoraFMS::GIS qw(get_reverse_geoip_sql get_reverse_geoip_file get_random_close_point);
use Recon::Base;
use PandoraFMS::Recon::Base;
# Patched Nmap::Parser. See http://search.cpan.org/dist/Nmap-Parser/.
use PandoraFMS::NmapParser;
@ -156,7 +156,7 @@ sub data_consumer ($$) {
my @subnets = split(/,/, $task->{'subnet'});
my @communities = split(/,/, $task->{'snmp_community'});
my $recon = new Recon::Base(
my $recon = new PandoraFMS::Recon::Base(
communities => \@communities,
dbh => $dbh,
group_id => $task->{'id_group'},
@ -245,7 +245,7 @@ sub exec_recon_script ($$$) {
##########################################################################
# Guess the OS using xprobe2 or nmap.
##########################################################################
sub Recon::Base::guess_os($$) {
sub PandoraFMS::Recon::Base::guess_os($$) {
my ($self, $device) = @_;
# OS detection disabled. Use the device type.
@ -276,7 +276,7 @@ sub Recon::Base::guess_os($$) {
##############################################################################
# Returns the number of open ports from the given list.
##############################################################################
sub Recon::Base::tcp_scan ($$) {
sub PandoraFMS::Recon::Base::tcp_scan ($$) {
my ($self, $host) = @_;
my $open_ports = `"$self->{pa_config}->{nmap}" -p$self->{recon_ports} $host | grep open | wc -l`;
@ -286,7 +286,7 @@ sub Recon::Base::tcp_scan ($$) {
##########################################################################
# Create network profile modules for the given agent.
##########################################################################
sub Recon::Base::create_network_profile_modules($$$) {
sub PandoraFMS::Recon::Base::create_network_profile_modules($$$) {
my ($self, $agent_id, $device) = @_;
return unless ($self->{'id_network_profile'} > 0);
@ -312,7 +312,7 @@ sub Recon::Base::create_network_profile_modules($$$) {
##########################################################################
# Connect the given devices in the Pandora FMS database.
##########################################################################
sub Recon::Base::connect_agents($$$$$) {
sub PandoraFMS::Recon::Base::connect_agents($$$$$) {
my ($self, $dev_1, $if_1, $dev_2, $if_2) = @_;
# Check switch connectivy.
@ -363,7 +363,7 @@ sub Recon::Base::connect_agents($$$$$) {
# Create an agent for the given device. Returns the ID of the new (or
# existing) agent, undef on error.
##########################################################################
sub Recon::Base::create_agent($$) {
sub PandoraFMS::Recon::Base::create_agent($$) {
my ($self, $device) = @_;
my @agents = get_db_rows($self->{'dbh'},
@ -461,13 +461,13 @@ sub Recon::Base::create_agent($$) {
my $community = $self->get_community($device);
return $agent_id unless defined($community);
my @output = $self->snmp_get_value_array($device, $Recon::Base::IFINDEX);
my @output = $self->snmp_get_value_array($device, $PandoraFMS::Recon::Base::IFINDEX);
foreach my $if_index (@output) {
next unless ($if_index =~ /^[0-9]+$/);
# Check the status of the interface.
if ($self->{'all_ifaces'} == 0) {
my $if_status = $self->snmp_get_value($device, "$Recon::Base::IFOPERSTATUS.$if_index");
my $if_status = $self->snmp_get_value($device, "$PandoraFMS::Recon::Base::IFOPERSTATUS.$if_index");
next unless $if_status == 1;
}
@ -477,7 +477,7 @@ sub Recon::Base::create_agent($$) {
my $if_desc = ($mac ne '' ? "MAC $mac " : '') . ($ip ne '' ? "IP $ip" : '');
# Get the name of the network interface.
my $if_name = $self->snmp_get_value($device, "$Recon::Base::IFNAME.$if_index");
my $if_name = $self->snmp_get_value($device, "$PandoraFMS::Recon::Base::IFNAME.$if_index");
$if_name = "if$if_index" unless defined ($if_name);
$if_name =~ s/"//g;
@ -500,7 +500,7 @@ sub Recon::Base::create_agent($$) {
'ip_target' => $device,
'tcp_send' => 1,
'snmp_community' => $community,
'snmp_oid' => "$Recon::Base::IFOPERSTATUS.$if_index"
'snmp_oid' => "$PandoraFMS::Recon::Base::IFOPERSTATUS.$if_index"
);
pandora_create_module_from_hash ($self->{'pa_config'}, \%module, $self->{'dbh'});
} else {
@ -523,7 +523,7 @@ sub Recon::Base::create_agent($$) {
'ip_target' => $device,
'tcp_send' => 1,
'snmp_community' => $community,
'snmp_oid' => "$Recon::Base::IFINOCTECTS.$if_index");
'snmp_oid' => "$PandoraFMS::Recon::Base::IFINOCTECTS.$if_index");
pandora_create_module_from_hash ($self->{'pa_config'}, \%module, $self->{'dbh'});
} else {
my %module = (
@ -544,7 +544,7 @@ sub Recon::Base::create_agent($$) {
'ip_target' => $device,
'tcp_send' => 1,
'snmp_community' => $community,
'snmp_oid' => "$Recon::Base::IFOUTOCTECTS.$if_index");
'snmp_oid' => "$PandoraFMS::Recon::Base::IFOUTOCTECTS.$if_index");
pandora_create_module_from_hash ($self->{'pa_config'}, \%module, $self->{'dbh'});
} else {
my %module = (
@ -561,7 +561,7 @@ sub Recon::Base::create_agent($$) {
##########################################################################
# Delete already existing connections.
##########################################################################
sub Recon::Base::delete_connections($) {
sub PandoraFMS::Recon::Base::delete_connections($) {
my ($self) = @_;
$self->call('message', "Deleting connections...", 10);
@ -571,7 +571,7 @@ sub Recon::Base::delete_connections($) {
#######################################################################
# Print log messages.
#######################################################################
sub Recon::Base::message($$$) {
sub PandoraFMS::Recon::Base::message($$$) {
my ($self, $message, $verbosity) = @_;
logger($self->{'pa_config'}, "[Recon task " . $self->{'task_id'} . "] $message", $verbosity);
@ -580,7 +580,7 @@ sub Recon::Base::message($$$) {
##########################################################################
# Connect the given hosts to its parent.
##########################################################################
sub Recon::Base::set_parent($$$) {
sub PandoraFMS::Recon::Base::set_parent($$$) {
my ($self, $host, $parent) = @_;
return unless ($self->{'parent_detection'} == 1);
@ -615,7 +615,7 @@ sub Recon::Base::set_parent($$$) {
##########################################################################
# Update recon task status.
##########################################################################
sub Recon::Base::update_progress ($$) {
sub PandoraFMS::Recon::Base::update_progress ($$) {
my ($self, $progress) = @_;
db_do ($self->{'dbh'}, 'UPDATE trecon_task SET utimestamp = ?, status = ? WHERE id_rt = ?', time (), $progress, $self->{'task_id'});