logstash-filter-useragent 2.0.8 → 3.0.0
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/CHANGELOG.md +2 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.md +12 -2
- data/lib/logstash/filters/useragent.rb +11 -11
- data/logstash-filter-useragent.gemspec +3 -3
- data/spec/filters/useragent_spec.rb +13 -13
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 598bbd9355cf951cd710c2b09fadc85853f26522
|
4
|
+
data.tar.gz: 767669dbe7e9824374f47c99d24a4e776d0dc96c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aecb151986072624ead48ca4fd894a5161ad9513a3c36751fe97db8347129ef3f889a9902bcdcdc25230182890ae4c9499ebae08e2b776120609abf1abe8cab2
|
7
|
+
data.tar.gz: 6d4af28f0a412d5765a6723689d02f760f5a2aa4e649ae1acc0a2f2064884612a93250572a322e5e405a6bea6cb6d577cf1bd8660d180deba9b23f789defff0c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
## 3.0.0
|
2
|
+
- Update the plugin to the version 2.0 of the plugin api, this change is required for Logstash 5.0 compatibility. See https://github.com/elastic/logstash/issues/5141
|
1
3
|
# 2.0.8
|
2
4
|
- Revert addition of Mutex. This plugin now depends on jruby having threadsafe regexps
|
3
5
|
# 2.0.7
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Logstash Plugin
|
2
2
|
|
3
|
-
[](https://travis-ci.org/logstash-plugins/logstash-filter-useragent)
|
4
4
|
|
5
5
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
6
6
|
|
@@ -55,7 +55,12 @@ gem "logstash-filter-awesome", :path => "/your/local/logstash-filter-awesome"
|
|
55
55
|
```
|
56
56
|
- Install plugin
|
57
57
|
```sh
|
58
|
+
# Logstash 2.3 and higher
|
59
|
+
bin/logstash-plugin install --no-verify
|
60
|
+
|
61
|
+
# Prior to Logstash 2.3
|
58
62
|
bin/plugin install --no-verify
|
63
|
+
|
59
64
|
```
|
60
65
|
- Run Logstash with your plugin
|
61
66
|
```sh
|
@@ -73,7 +78,12 @@ gem build logstash-filter-awesome.gemspec
|
|
73
78
|
```
|
74
79
|
- Install the plugin from the Logstash home
|
75
80
|
```sh
|
76
|
-
|
81
|
+
# Logstash 2.3 and higher
|
82
|
+
bin/logstash-plugin install --no-verify
|
83
|
+
|
84
|
+
# Prior to Logstash 2.3
|
85
|
+
bin/plugin install --no-verify
|
86
|
+
|
77
87
|
```
|
78
88
|
- Start Logstash and proceed to test the plugin
|
79
89
|
|
@@ -93,7 +93,7 @@ class LogStash::Filters::UserAgent < LogStash::Filters::Base
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def filter(event)
|
96
|
-
useragent = event
|
96
|
+
useragent = event.get(@source)
|
97
97
|
useragent = useragent.first if useragent.is_a?(Array)
|
98
98
|
|
99
99
|
return if useragent.nil? || useragent.empty?
|
@@ -135,7 +135,7 @@ class LogStash::Filters::UserAgent < LogStash::Filters::Base
|
|
135
135
|
def set_fields(event, ua_data)
|
136
136
|
# UserAgentParser outputs as US-ASCII.
|
137
137
|
|
138
|
-
event
|
138
|
+
event.set(@prefixed_name, ua_data.name.dup.force_encoding(Encoding::UTF_8))
|
139
139
|
|
140
140
|
#OSX, Andriod and maybe iOS parse correctly, ua-agent parsing for Windows does not provide this level of detail
|
141
141
|
|
@@ -143,23 +143,23 @@ class LogStash::Filters::UserAgent < LogStash::Filters::Base
|
|
143
143
|
# and corrupt the cache. See uap source here for details https://github.com/ua-parser/uap-ruby/tree/master/lib/user_agent_parser
|
144
144
|
if (os = ua_data.os)
|
145
145
|
# The OS is a rich object
|
146
|
-
event
|
147
|
-
event
|
146
|
+
event.set(@prefixed_os, ua_data.os.to_s.dup.force_encoding(Encoding::UTF_8))
|
147
|
+
event.set(@prefixed_os_name, os.name.dup.force_encoding(Encoding::UTF_8)) if os.name
|
148
148
|
|
149
149
|
# These are all strings
|
150
150
|
if (os_version = os.version)
|
151
|
-
event
|
152
|
-
event
|
151
|
+
event.set(@prefixed_os_major, os_version.major.dup.force_encoding(Encoding::UTF_8)) if os_version.major
|
152
|
+
event.set(@prefixed_os_minor, os_version.minor.dup.force_encoding(Encoding::UTF_8)) if os_version.minor
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
-
event
|
156
|
+
event.set(@prefixed_device, ua_data.device.to_s.dup.force_encoding(Encoding::UTF_8)) if ua_data.device
|
157
157
|
|
158
158
|
if (ua_version = ua_data.version)
|
159
|
-
event
|
160
|
-
event
|
161
|
-
event
|
162
|
-
event
|
159
|
+
event.set(@prefixed_major, ua_version.major.dup.force_encoding(Encoding::UTF_8)) if ua_version.major
|
160
|
+
event.set(@prefixed_minor, ua_version.minor.dup.force_encoding(Encoding::UTF_8)) if ua_version.minor
|
161
|
+
event.set(@prefixed_patch, ua_version.patch.dup.force_encoding(Encoding::UTF_8)) if ua_version.patch
|
162
|
+
event.set(@prefixed_build, ua_version.patch_minor.dup.force_encoding(Encoding::UTF_8)) if ua_version.patch_minor
|
163
163
|
end
|
164
164
|
end
|
165
165
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-filter-useragent'
|
4
|
-
s.version = '
|
4
|
+
s.version = '3.0.0'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Parse user agent strings into structured data based on BrowserScope data"
|
7
|
-
s.description = "This gem is a
|
7
|
+
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"
|
8
8
|
s.authors = ["Elastic"]
|
9
9
|
s.email = 'info@elastic.co'
|
10
10
|
s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
|
21
21
|
|
22
22
|
# Gem dependencies
|
23
|
-
s.add_runtime_dependency "logstash-core-plugin-api", "~>
|
23
|
+
s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
|
24
24
|
|
25
25
|
s.add_runtime_dependency 'user_agent_parser', ['>= 2.0.0']
|
26
26
|
s.add_runtime_dependency 'lru_redux', "~> 1.1.0"
|
@@ -17,10 +17,10 @@ describe LogStash::Filters::UserAgent do
|
|
17
17
|
|
18
18
|
sample "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" do
|
19
19
|
insist { subject }.include?("ua")
|
20
|
-
insist { subject[
|
21
|
-
insist { subject[
|
22
|
-
insist { subject[
|
23
|
-
insist { subject[
|
20
|
+
insist { subject.get("[ua][name]") } == "Chrome"
|
21
|
+
insist { subject.get("[ua][os]") } == "Linux"
|
22
|
+
insist { subject.get("[ua][major]") } == "26"
|
23
|
+
insist { subject.get("[ua][minor]") } == "0"
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -34,10 +34,10 @@ describe LogStash::Filters::UserAgent do
|
|
34
34
|
CONFIG
|
35
35
|
|
36
36
|
sample "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" do
|
37
|
-
insist { subject
|
38
|
-
insist { subject
|
39
|
-
insist { subject
|
40
|
-
insist { subject
|
37
|
+
insist { subject.get("name") } == "Chrome"
|
38
|
+
insist { subject.get("os") } == "Linux"
|
39
|
+
insist { subject.get("major") } == "26"
|
40
|
+
insist { subject.get("minor") } == "0"
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -91,7 +91,7 @@ describe LogStash::Filters::UserAgent do
|
|
91
91
|
}.each do |field, uad_getter|
|
92
92
|
context "for the #{field} field" do
|
93
93
|
let(:value) {uad_getter.call(ua_data)}
|
94
|
-
let(:target_field) { target
|
94
|
+
let(:target_field) { target.get(field)}
|
95
95
|
|
96
96
|
it "should not have a nil value" do
|
97
97
|
expect(target_field).to be_truthy
|
@@ -120,10 +120,10 @@ describe LogStash::Filters::UserAgent do
|
|
120
120
|
|
121
121
|
sample "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" do
|
122
122
|
insist { subject.to_hash }.include?("message")
|
123
|
-
insist { subject[
|
124
|
-
insist { subject[
|
125
|
-
insist { subject[
|
126
|
-
insist { subject[
|
123
|
+
insist { subject.get("[message][name]") } == "Chrome"
|
124
|
+
insist { subject.get("[message][os]") } == "Linux"
|
125
|
+
insist { subject.get("[message][major]") } == "26"
|
126
|
+
insist { subject.get("[message][minor]") } == "0"
|
127
127
|
end
|
128
128
|
end
|
129
129
|
end
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-useragent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: '
|
18
|
+
version: '2.0'
|
19
19
|
name: logstash-core-plugin-api
|
20
20
|
prerelease: false
|
21
21
|
type: :runtime
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description: This gem is a
|
69
|
+
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
|
70
70
|
email: info@elastic.co
|
71
71
|
executables: []
|
72
72
|
extensions: []
|