logstash-filter-handsetdetection 4.1.5 → 4.1.6

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
  SHA1:
3
- metadata.gz: 0baa66b30c1e7421a3d08915223d0b8676a10926
4
- data.tar.gz: 8aad617cce69ef9fb9c0b86b77adc300c6f1d87f
3
+ metadata.gz: 62dc4e2101623ea269d793a59feb13604c229b77
4
+ data.tar.gz: dabde0a0b23eeae1512b0644b9d67a07421e512d
5
5
  SHA512:
6
- metadata.gz: e97953b414d1351a1bc159515dc12af37280e3d4dd2aa3241e5a3f18fffe7b23c944bb7665b5015923aece0c32354b0a3bf4c8b4ebe0860efbfa414bb329ec29
7
- data.tar.gz: 6050e7a6c4a52d347eb9751248eb8ac76f17333a88d8dce92e6d612e4114a09de079ef3217c565c5530458997a6203ee7b8d75a195d73249bbd04e3f48947c2b
6
+ metadata.gz: 9b4102c5d7a7bfaefe613dbe7c71a5e7cc3de956496c45c4fbba82d00ae8297abfd0572aff01ea482f65e05c1e66e6a9c79ca833d6f4fc0ae0a6947dc70de00b
7
+ data.tar.gz: fd4b92c23757ccb2deea8be24809f6a43015253b65026da712530ba93fe3b94fdc8efb67ebdf0fb97b6fe2bfc537ececc4eca14dda2eae5fe04fb9bdc3b2c461
data/README.md CHANGED
@@ -21,7 +21,7 @@ Extract the User-Agent header from an Apache log with Grok, and then enrich the
21
21
  username => "xxxxxxxxxx"
22
22
  password => "xxxxxxxxxxxxxxxx"
23
23
  site_id => 000000
24
- online_api => false
24
+ detection_type => ultimate
25
25
  match => {
26
26
  "agent" => "user-agent"
27
27
  }
@@ -36,10 +36,11 @@ Extract the User-Agent header from an Apache log with Grok, and then enrich the
36
36
 
37
37
  | Field | Description | Default |
38
38
  | --- | --- | --- |
39
- | `online_api` | Set to `true` in order to do **online** lookups against the Handset Detection API | `false` |
39
+ | `detection_type` | Set to `cloud` in order to do **online** lookups against the Handset Detection API. Set to `ultimate` to use Handset Detection **Ultimate Edition**. Set to `community` to use Handset Detection **Community Edition** | `cloud` |
40
40
  | `username` | Your Handset Detection API username | |
41
41
  | `password` | Your Handset Detection API password | |
42
42
  | `site_id` | The Handset Detection API site ID to use | |
43
+ | `db_refresh_days` | How often to update the locally stored database, in days (for Handset Detection Ultimate Edition and Community Edition) | `10` |
43
44
  | `match` | An associative array mapping input field names to header names used for handset detection. For example: Extract the `user-agent` header from the `agent` input field. | `{ "agent" => "user-agent" }` |
44
45
  | `filter` | Optionally, define an array of the handset spec properties to be included in the output. By default, all properties are included in the output. | [] |
45
46
  | `use_proxy` | Set to `true` if accessing the web through a proxy | `false` |
@@ -34,11 +34,12 @@ class LogStash::Filters::HandsetDetection < LogStash::Filters::Base
34
34
 
35
35
  config_name 'handsetdetection'
36
36
 
37
- config :online_api, :validate => :boolean, :default => false
37
+ config :detection_type, :validate => :string, :default => 'cloud'
38
38
  config :username, :validate => :string, :default => ''
39
39
  config :password, :validate => :string, :default => ''
40
40
  config :site_id, :validate => :number, :default => 0
41
41
  config :apiserver, :validate => :string, :default => 'api.handsetdetection.com'
42
+ config :db_refresh_days, :validate => :number, :default => 10
42
43
  config :match, :validate => :hash, :default => { 'agent' => 'user-agent' }
43
44
  config :filter, :validate => :array, :default => []
44
45
  config :use_proxy, :validate => :boolean, :default => false
@@ -47,6 +48,8 @@ class LogStash::Filters::HandsetDetection < LogStash::Filters::Base
47
48
  config :proxy_user, :validate => :string, :default => ''
48
49
  config :proxy_pass, :validate => :string, :default => ''
49
50
  config :log_unknown, :validate => :boolean, :default => true
51
+ config :cache, :validate => :boolean, :default => true
52
+ config :cache_requests, :validate => :boolean, :default => false
50
53
  config :local_archive_source, :validate => :string, :default => nil
51
54
 
52
55
  public
@@ -55,12 +58,11 @@ class LogStash::Filters::HandsetDetection < LogStash::Filters::Base
55
58
  @hd_config['username'] = @username
56
59
  @hd_config['secret'] = @password
57
60
  @hd_config['site_id'] = @site_id
58
- @hd_config['use_local'] = @online_api ? false : true
59
61
  @hd_config['filesdir'] = Dir.tmpdir
60
- @hd_config['cache'] = {'none' => {}}
62
+ @hd_config['cache'] = @cache ? {'memory' => {'thread_safe' => true}} : {'none' => {}}
61
63
  @hd_config['debug'] = false
62
64
  @hd_config['api_server'] = @apiserver
63
- @hd_config['cache_requests'] = false
65
+ @hd_config['cache_requests'] = @cache_requests
64
66
  @hd_config['geoip'] = true
65
67
  @hd_config['timeout'] = 30
66
68
  @hd_config['use_proxy'] = @use_proxy
@@ -73,12 +75,23 @@ class LogStash::Filters::HandsetDetection < LogStash::Filters::Base
73
75
  @hd_config['local_archive_source'] = @local_archive_source
74
76
 
75
77
  @@pool = ThreadSafe::Array.new
76
- unless @online_api
78
+ if @detection_type == 'ultimate' or @detection_type == 'community'
79
+ @hd_config['use_local'] = true
77
80
  hd = HD4.new @hd_config
78
- hd.set_timeout 500
79
- hd.device_fetch_archive
80
- hd.set_timeout 30
81
+ path = (@detection_type == 'ultimate') ? hd.device_get_zip_path : hd.community_get_zip_path
82
+ if !File.exist?(path) or (Time.now - File.mtime(path)) / (24 * 3600) > @db_refresh_days
83
+ hd.set_timeout 500
84
+ result = (@detection_type == 'ultimate') ? hd.device_fetch_archive : hd.community_fetch_archive
85
+ raise LogStash::Error, "Error downloading the Handset Detection database. (Original cause: \"#{hd.get_reply['message']}\") Please try again." unless result
86
+ hd.set_timeout 30
87
+ else
88
+ # Do not download the ZIP file.
89
+ end
81
90
  @@pool << hd
91
+ elsif @detection_type == 'cloud'
92
+ @hd_config['use_local'] = false
93
+ else
94
+ raise LogStash::ConfigurationError, 'Detection_type should be one of: cloud, ultimate, community.'
82
95
  end
83
96
  end
84
97
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-filter-handsetdetection'
3
- s.version = '4.1.5'
3
+ s.version = '4.1.6'
4
4
  s.licenses = ['MIT']
5
5
  s.summary = "Handset Detection filter plugin for Logstash"
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"
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
 
20
20
  # Gem dependencies
21
21
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
22
- s.add_runtime_dependency "handset_detection", "~> 4.1", ">= 4.1.5"
22
+ s.add_runtime_dependency "handset_detection", "~> 4.1", ">= 4.1.6"
23
23
 
24
24
  #s.add_development_dependency 'logstash-devutils'
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-handsetdetection
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.5
4
+ version: 4.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Handset Detection
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-16 00:00:00.000000000 Z
11
+ date: 2016-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core-plugin-api
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '4.1'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 4.1.5
42
+ version: 4.1.6
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '4.1'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 4.1.5
52
+ version: 4.1.6
53
53
  description: This gem is a Logstash plugin required to be installed on top of the
54
54
  Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This
55
55
  gem is not a stand-alone program