logstash-filter-ieee_oui 1.0.3 → 1.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e53e780052ecbe451efdb6f2edb4fb8626cec424712fdfc4dca766094f54aef5
4
- data.tar.gz: 4cab1322e9e921f0bd8d97098d5e00da5864d423cb6769317782b9ed4482e497
3
+ metadata.gz: 8b61037e52fda75b4e8a35244d59dea7246e8c8ce719853dfcfb45d8eba1ad01
4
+ data.tar.gz: ab87f272af68fe7f88ef6ed3117839f5beab36d74ce8f8ee6ccad8731873359a
5
5
  SHA512:
6
- metadata.gz: c58ddfdc06ac071d5f9cd77d7d725589ee30b0237bcbef6c0974b65dc23840400cfa316d5f96c05f88f2afc51687f5b9b57c6cf3a3ecccf5b6b6189184a029ef
7
- data.tar.gz: 0c2475c9efe4d819189a77c3d7335c612524ee1d0e1fba558031c1134302100f6cc2ccad9631317d814cd0c66852810c3daca9a2d170a4c020d575a9651e20b4
6
+ metadata.gz: 7abfa3b8c0575693846535c186ed1799041b294fc5e6d6a38dbae20adae34ac9c6de11fb4f6d27aebd2865b3fa27cb69e4ae965517a0da26fef7368e121e1d06
7
+ data.tar.gz: 79eb3c71569239ceb9a7968c77f7d9a696e82871758dba3f7758b32d07b37b58773394aadc3ccee6713dd1bb89b61995afc75c9014c1c25e0d55c3408ebd181d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
+ ## 1.0.4
2
+ - added auto refresh of ouifile
1
3
  ## 1.0.3
2
4
  - stripped carriage return
3
5
  ## 1.0.2
data/README.md CHANGED
@@ -11,9 +11,16 @@ See [logstash-oui-scraper](https://github.com/Vigilant-LLC/logstash-oui-scraper)
11
11
 
12
12
  See [CHANGELOG](https://github.com/Vigilant-LLC/logstash-filter-ieee_oui/blob/master/CHANGELOG.md) for development notes.
13
13
 
14
-
15
- # License
16
- It is fully free and fully open source. The license is Apache 2.0, meaning you are pretty much free to use it however you want in whatever way. [LICENSE](https://github.com/Vigilant-LLC/logstash-filter-ieee_oui/blob/master/LICENSE)
14
+ #### USAGE
15
+ ```
16
+ filter {
17
+ ieee_oui {
18
+ source => 'macaddress'
19
+ target => 'oui_vendor'
20
+ ouifile => '/path_to/oui-logstash.txt'
21
+ }
22
+ }
23
+ ```
17
24
 
18
25
  #### Code
19
26
  - To get started, you'll need JRuby with the Bundler gem installed.
@@ -38,14 +45,6 @@ bin/logstash-plugin install /your/local/plugin/logstash-filter-ieee_oui.gem
38
45
  ```
39
46
  - Start Logstash and proceed to test the plugin
40
47
 
41
- #### USAGE
42
- ```
43
- filter {
44
- ieee_oui {
45
- source => 'macaddress'
46
- target => 'oui_vendor'
47
- ouifile => '/path_to/oui-logstash.txt'
48
- }
49
- }
50
- ```
48
+ # License
49
+ It is fully free and fully open source. The license is Apache 2.0, meaning you are pretty much free to use it however you want in whatever way. [LICENSE](https://github.com/Vigilant-LLC/logstash-filter-ieee_oui/blob/master/LICENSE)
51
50
 
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require "logstash/filters/base"
3
3
  require "logstash/namespace"
4
+ require 'digest'
4
5
 
5
6
  # The ieee_oui filter allows you to match mac addresses to vendor names.
6
7
  # It accepts source mac addresses delimited by a colon(:), a dash(-) or no delimiter.
@@ -36,35 +37,56 @@ class LogStash::Filters::IeeeOui < LogStash::Filters::Base
36
37
  @ouihash = nil
37
38
  else
38
39
  @logger.info("Using oui file", :path => @ouifile)
39
- @ouihash = Hash[*File.read(ouifile).split(/\t|\n/)]
40
+ @md5 = md5file(@ouifile)
41
+ @newmd5 = md5file(@ouifile)
42
+ @ouihash = hashfile(@ouifile)
40
43
  end
41
44
  end # def register
42
45
 
43
- public
46
+ #public
47
+ def md5file(file)
48
+ return Digest::MD5.file(file).hexdigest
49
+ end
50
+
51
+ def hashfile(file)
52
+ return Hash[*File.read(file).split(/\t|\n/)]
53
+ end
54
+
55
+ def refreshfile(file)
56
+ @newmd5 = md5file(file)
57
+ if @newmd5 != @md5
58
+ @md5 = md5file(file)
59
+ @ouihash = hashfile(file)
60
+ @logger.info("Refreshing oui file" , :path => file)
61
+ end
62
+ end
63
+
44
64
  def filter(event)
45
65
  matched = false
46
66
  if ! @ouihash.nil?
67
+ refreshfile(@ouifile)
47
68
  validhex = false
48
69
  mac = event.get(@source)
49
70
  delimiter = mac[2]
50
71
  if delimiter[/\H/]
51
- mfrid = mac.split("#{delimiter}")[0..2].join.upcase
72
+ mfrid = mac.split("#{delimiter}")[0..2].join.upcase
52
73
  else
53
74
  mfrid = mac[0,6].upcase
54
75
  end
55
76
  if !mfrid[/\H/]
56
77
  validhex = true
57
78
  vendor = @ouihash[mfrid]
58
- if vendor
79
+ if vendor.nil?
80
+ vendor = 'unknown'
81
+ else
59
82
  vendor = vendor.gsub(/\r/,"")
60
- matched = true
61
- event.set("#{@target}", vendor)
62
83
  end
84
+ matched = true
85
+ event.set("#{@target}", vendor)
63
86
  end
64
- # filter_matched should go in the last line of our successful code
65
- @logger.debug("Invalid Hex in source", :string => @source) if not validhex
66
- @tag_on_failure.each{|tag| event.tag(tag)} if not matched
67
87
  end
88
+ @logger.debug("Invalid Hex in source", :string => @source) if not validhex
89
+ @tag_on_failure.each{|tag| event.tag(tag)} if not matched
68
90
  filter_matched(event) if matched
69
91
  end # def filter
70
92
  end # class LogStash::Filters::IeeeOui
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-filter-ieee_oui'
3
- s.version = '1.0.3'
3
+ s.version = '1.0.4'
4
4
  s.licenses = ['Apache-2.0']
5
5
  s.summary = 'Logstash filter to parse OUI data from mac addresses, requires external OUI txt file from ieee.org'
6
6
  s.description = 'This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program'
@@ -39,7 +39,6 @@ describe LogStash::Filters::IeeeOui do
39
39
  end
40
40
  end
41
41
 
42
-
43
42
  describe "mac with dashes" do
44
43
  let(:config) do <<-CONFIG
45
44
  filter {
@@ -76,7 +75,6 @@ describe LogStash::Filters::IeeeOui do
76
75
  end
77
76
  end
78
77
 
79
-
80
78
  describe "mac invalid hex" do
81
79
  let(:config) do <<-CONFIG
82
80
  filter {
@@ -94,7 +92,7 @@ describe LogStash::Filters::IeeeOui do
94
92
  end
95
93
  end
96
94
 
97
- describe "non existent" do
95
+ describe "unknown" do
98
96
  let(:config) do <<-CONFIG
99
97
  filter {
100
98
  ieee_oui {
@@ -106,9 +104,8 @@ describe LogStash::Filters::IeeeOui do
106
104
  CONFIG
107
105
  end
108
106
 
109
- sample("mac" => "00-00-00-0b-67-6c") do
110
- expect(subject.get("tags")).to include("_ouilookupfailure")
107
+ sample("mac" => "02-42-C0-0b-67-6c") do
108
+ expect(subject.get('[oui][mac_vendor]')).to eq('unknown')
111
109
  end
112
110
  end
113
-
114
111
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-ieee_oui
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Pananen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-29 00:00:00.000000000 Z
11
+ date: 2019-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement