1
|
#!/usr/bin/perl -T
|
2
|
|
3
|
use strict;
|
4
|
use warnings;
|
5
|
|
6
|
use Time::HiRes qw( time );
|
7
|
use Value::Convertor;
|
8
|
use Mentat::Message::Storage::Mongo;
|
9
|
|
10
|
my ($min, $max) = Value::Convertor->ipv4cidr_to_bins("158.196.158.0", 24);
|
11
|
$min = MongoDB::BSON::Binary->new(data => $min, subtype => 0);
|
12
|
$max = MongoDB::BSON::Binary->new(data => $max, subtype => 0);
|
13
|
|
14
|
my $filter = {
|
15
|
'Alert.Source.Node.Address.ipv4.min' => {
|
16
|
'$gte' => $min,
|
17
|
},
|
18
|
'Alert.Source.Node.Address.ipv4.max' => {
|
19
|
'$lte' => $max,
|
20
|
},
|
21
|
'Alert.Classification.@text' => 'Webattack',
|
22
|
};
|
23
|
|
24
|
my $storage = Mentat::Message::Storage::Mongo->new(database => 'mentat', collection => 'alerts');
|
25
|
my ($results, $count);
|
26
|
|
27
|
my $start = time;
|
28
|
|
29
|
################################################################################
|
30
|
# OPTION A
|
31
|
################################################################################
|
32
|
|
33
|
($results, $count) = $storage->find_msg($filter);
|
34
|
|
35
|
################################################################################
|
36
|
# OPTION B
|
37
|
################################################################################
|
38
|
|
39
|
#($results, $count) = $storage->find($filter);
|
40
|
|
41
|
################################################################################
|
42
|
# OPTION C
|
43
|
################################################################################
|
44
|
|
45
|
#my $cursor = $storage->find_i($filter);
|
46
|
#while (my $doc = $cursor->next) {
|
47
|
# push(@$results, $doc); $count++;;
|
48
|
#}
|
49
|
|
50
|
################################################################################
|
51
|
my $end = time;
|
52
|
print STDERR "DURATION: ".($end-$start).", COUNT: $count\n";
|
53
|
|