Metabrik-Repository

 view release on metacpan or  search on metacpan

lib/Metabrik/Network/Sinfp3.pm  view on Meta::CPAN

         'Net::SinFP3::Input::Signature' => [ ],
         'Net::SinFP3::DB::SinFP3' => [ ],
         'Net::SinFP3::Mode::Active' => [ ],
         'Net::SinFP3::Search::Active' => [ ],
         'Net::SinFP3::Search::Null' => [ ],
         'Net::SinFP3::Output::Console' => [ ],
         'Net::SinFP3::Output::Pcap' => [ ],
         'Net::SinFP3::Output::Simple' => [ ],
         'Metabrik::Client::Www' => [ ],
      },
   };
}

sub brik_use_properties {
   my $self = shift;

   return {
      attributes_default => {
         device => defined($self->global) && $self->global->device || 'eth0',
      },
   };
}

sub brik_init {
   my $self = shift;

   my $datadir = $self->datadir;
   my $file = $datadir.'/'.$self->db;
   my $threshold = $self->threshold;
   my $best_score_only = $self->best_score_only;

   if (! -f $file) {
      $self->update or return;
   }

   my $log = Net::SinFP3::Log::Null->new(
      level => $self->log->level,
   ) or return $self->log->error('brik_init: log::null failed');
   $log->init;

   my $global = Net::SinFP3::Global->new(
      log => $log,
      ipv6 => 0,
      dnsReverse => 0,
      threshold => $threshold,
      bestScore => $best_score_only,
   ) or return $self->log->error('brik_init: global failed');

   my $db = Net::SinFP3::DB::SinFP3->new(
      global => $global,
      file => $file,
   ) or return $self->log->error('brik_init: db::sinfp3 failed');
   $db->init;
   $global->db($db);

   $self->_global($global);

   return $self->SUPER::brik_init(@_);
}

sub update {
   my $self = shift;

   my $db = $self->db;
   my $datadir = $self->datadir;

   my $url = $self->_update_url;

   my $cw = Metabrik::Client::Www->new_from_brik_init($self) or return;
   my $files = $cw->mirror($url, $db, $datadir) or return;
   if (@$files > 0) {
      $self->log->info("update: $db updated");
   }

   return "$datadir/$db";
}

sub active_ipv4 {
   my $self = shift;
   my ($target, $port) = @_;

   $target ||= $self->target;
   $port ||= $self->port;
   $self->brik_help_run_must_be_root('active_ipv4') or return;
   $self->brik_help_run_undef_arg('active_ipv4', $target) or return;
   $self->brik_help_run_undef_arg('active_ipv4', $port) or return;

   my $device = $self->device;
   my $threshold = $self->threshold;

   my $datadir = $self->datadir;
   my $file = $datadir.'/'.$self->db;
   $self->brik_help_run_file_not_found('active_ipv4', $file) or return;

   my $log = Net::SinFP3::Log::Console->new(
      level => $self->log->level,
   );

   my $global = Net::SinFP3::Global->new(
      log => $log,
      target => $target,
      port => $port,
      ipv6 => 0,
      dnsReverse => 0,
      worker => 'single',
      device => $device,
      threshold => $threshold,
   ) or return $self->log->error("active: global failed");

   my $input = Net::SinFP3::Input::IpPort->new(
      global => $global,
   );

   my $db = Net::SinFP3::DB::SinFP3->new(
      global => $global,
      file => $file,
   );

   my $mode = Net::SinFP3::Mode::Active->new(
      global => $global,
      doP1 => 1,



( run in 1.023 second using v1.01-cache-2.11-cpan-39bf76dae61 )