logstash-filter-ipam 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/logstash/filters/ipam.rb +21 -19
- data/logstash-filter-ipam.gemspec +1 -1
- data/spec/filters/ipam_spec.rb +6 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c955d04a7374c6098811d3e6057b26a1bef34da67597fcc574fa8b0d5e6004db
|
4
|
+
data.tar.gz: ee1b6a5c5a1b4f13ed3bc6b7e01ac84cc1345dbc1b14e5e9062cad3355543f79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c98a7ce2512389c315eeb307010ce576f401d6a53c24e084005860f98b909509ed8d45049d5fda9b7d53136caa1e740cd049b50299f6701c2c5e614f16ccee9a
|
7
|
+
data.tar.gz: 386d69da57968abc09924476c0b9289286deef2fb57208e0e2a1f93f68f4601ed77766a88ea5fb241b31e9dee2d37a8c15546c6628903a9575951e58e2fb4efd
|
@@ -23,7 +23,7 @@ class LogStash::Filters::Ipam < LogStash::Filters::Base
|
|
23
23
|
|
24
24
|
# Mysql connection options.
|
25
25
|
config :mysql_host, :validate => :string, :required => true
|
26
|
-
|
26
|
+
config :mysql_port, :validate => :number, :default => 3306
|
27
27
|
config :mysql_user, :validate => :string, :required => true
|
28
28
|
config :mysql_pass, :validate => :string, :required => true
|
29
29
|
config :mysql_db, :validate => :string, :default => "phpipam"
|
@@ -59,24 +59,20 @@ class LogStash::Filters::Ipam < LogStash::Filters::Base
|
|
59
59
|
# Get all the subnets from the Table
|
60
60
|
subnets = ActiveRecord::Base.connection.exec_query("SELECT id, subnet, mask, description FROM subnets")
|
61
61
|
|
62
|
-
#
|
63
|
-
json = '{"subnets":['
|
62
|
+
# Set subnets into IPv4 address format
|
64
63
|
subnets.each do |sub|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
sub['
|
69
|
-
end
|
70
|
-
json += ', "subnet": "' + sub['subnet'].to_s + '"'
|
71
|
-
if sub['mask'].to_s.length > 0
|
72
|
-
json += ', "netmask": ' + sub['mask'].to_s
|
64
|
+
isub = Integer(sub['subnet'])
|
65
|
+
if isub >= 0 && isub <= 4294967295
|
66
|
+
sub['subnet'] = IPAddr.new(isub, Socket::AF_INET).to_s
|
67
|
+
sub['ipv4'] = true
|
73
68
|
else
|
74
|
-
|
69
|
+
sub['ipv4'] = false
|
70
|
+
@logger.warn("Logger : Not compatible with IPv4.", :address => sub['subnet'], :event => event)
|
75
71
|
end
|
76
|
-
json += ', "description": "' + sub['description'] + '"},'
|
77
72
|
end
|
78
|
-
|
79
|
-
|
73
|
+
|
74
|
+
# Parse result to create a JSON string
|
75
|
+
return subnets.to_json
|
80
76
|
rescue
|
81
77
|
@logger.warn("Impossible to retrieve data from MySQL.", :address => @mysql_host, :event => event)
|
82
78
|
end
|
@@ -88,8 +84,7 @@ class LogStash::Filters::Ipam < LogStash::Filters::Base
|
|
88
84
|
# Reading files
|
89
85
|
begin
|
90
86
|
file = File.read(@file)
|
91
|
-
|
92
|
-
return json["subnets"]
|
87
|
+
return JSON.parse(file)
|
93
88
|
rescue
|
94
89
|
@logger.warn("Impossible to read into file.", :address => @file, :event => event)
|
95
90
|
end
|
@@ -99,6 +94,9 @@ class LogStash::Filters::Ipam < LogStash::Filters::Base
|
|
99
94
|
def checkIpSubnets(ip, subnets)
|
100
95
|
results = Array.new
|
101
96
|
subnets.each do |sub|
|
97
|
+
if !sub['ipv4']
|
98
|
+
next
|
99
|
+
end
|
102
100
|
if !@gateway && sub['subnet'] == "0.0.0.0"
|
103
101
|
next
|
104
102
|
end
|
@@ -128,10 +126,14 @@ class LogStash::Filters::Ipam < LogStash::Filters::Base
|
|
128
126
|
# if need reset => update content.
|
129
127
|
checkFile(event)
|
130
128
|
|
131
|
-
# Get Subnets
|
129
|
+
# Get Subnets from updated file
|
132
130
|
# if can't read => Warning
|
133
|
-
# if gateway is false => won't register "0.0.0.0" subnets
|
134
131
|
ipamSubnets = getIpamSubnets(event)
|
132
|
+
|
133
|
+
# Get Subnets that contains IP
|
134
|
+
# if @gateway => Get 0.0.0.0 subnets
|
135
|
+
# else => Don't get those subnets
|
136
|
+
# if !ipv4 => Don't handle those subnets
|
135
137
|
subnets = checkIpSubnets(@ip, subnets)
|
136
138
|
|
137
139
|
# Set field only if there is some subnets checked.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-filter-ipam'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.5'
|
4
4
|
s.licenses = ['Apache-2.0']
|
5
5
|
s.summary = 'Correlation with IPAM.'
|
6
6
|
s.description = 'Filter that allows getting subnets from existing file extracted from IPAM for an IP address.'
|
data/spec/filters/ipam_spec.rb
CHANGED
@@ -13,9 +13,12 @@ describe LogStash::Filters::Ipam do
|
|
13
13
|
CONFIG
|
14
14
|
end
|
15
15
|
|
16
|
-
sample("ip" => "212.24.215.123"
|
17
|
-
|
18
|
-
|
16
|
+
sample("ip" => "212.24.215.123",
|
17
|
+
"mysql_host" => "172.19.0.19",
|
18
|
+
"mysql_user" => "kibana",
|
19
|
+
"mysql_pass" => "QZQxf4XQGni6",) do
|
20
|
+
#expect(subject).to include("subnets")
|
21
|
+
#expect(subject.get('subnets')).to !eq('')
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-ipam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corentin Dekimpe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|