logstash-input-imap 2.0.2 → 2.0.3
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 +4 -1
- data/README.md +3 -0
- data/lib/logstash/inputs/imap.rb +15 -20
- data/logstash-input-imap.gemspec +1 -1
- metadata +23 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e44a07b4668341c7b203b9c62749c0544dc8892
|
4
|
+
data.tar.gz: 69834845b863c7ff2aff43743296d95f4e50b67d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db7e4523bc2c697778f4765c2a4d4733bf1b4bbe52707ce7a05dc781537e5edb4ac5792692577778ebd31e113370cb75b1f3c1a3454ad3259d1691bec3cefb1f
|
7
|
+
data.tar.gz: 8fb6a62d4b5edd78f38f88ae25bbfe102c4982db54d75d9fe77dff33e8b4dd87527dc49c4da943ee8fd8bb05ff19c726381e1134c19f56d5486d78bd7d12a08f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
## 2.0.3
|
2
|
+
- Fixed fields assignments
|
3
|
+
|
1
4
|
## 2.0.0
|
2
|
-
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
5
|
+
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
3
6
|
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
4
7
|
- Dependency on logstash-core update to 2.0
|
5
8
|
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Logstash Plugin
|
2
2
|
|
3
|
+
[](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-imap-unit/)
|
5
|
+
|
3
6
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
4
7
|
|
5
8
|
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.
|
data/lib/logstash/inputs/imap.rb
CHANGED
@@ -32,7 +32,6 @@ class LogStash::Inputs::IMAP < LogStash::Inputs::Base
|
|
32
32
|
# content-type as the event message.
|
33
33
|
config :content_type, :validate => :string, :default => "text/plain"
|
34
34
|
|
35
|
-
public
|
36
35
|
def register
|
37
36
|
require "net/imap" # in stdlib
|
38
37
|
require "mail" # gem 'mail'
|
@@ -89,11 +88,11 @@ class LogStash::Inputs::IMAP < LogStash::Inputs::Base
|
|
89
88
|
|
90
89
|
imap.close
|
91
90
|
imap.disconnect
|
92
|
-
end
|
91
|
+
end
|
93
92
|
|
94
93
|
def parse_mail(mail)
|
95
94
|
# Add a debug message so we can track what message might cause an error later
|
96
|
-
@logger.debug("Working with message_id", :message_id => mail.message_id)
|
95
|
+
@logger.debug? && @logger.debug("Working with message_id", :message_id => mail.message_id)
|
97
96
|
# TODO(sissel): What should a multipart message look like as an event?
|
98
97
|
# For now, just take the plain-text part and set it as the message.
|
99
98
|
if mail.parts.count == 0
|
@@ -106,20 +105,13 @@ class LogStash::Inputs::IMAP < LogStash::Inputs::Base
|
|
106
105
|
end
|
107
106
|
|
108
107
|
@codec.decode(message) do |event|
|
109
|
-
# event = LogStash::Event.new("message" => message)
|
110
|
-
|
111
108
|
# Use the 'Date' field as the timestamp
|
112
109
|
event.timestamp = LogStash::Timestamp.new(mail.date.to_time)
|
113
110
|
|
114
111
|
# Add fields: Add message.header_fields { |h| h.name=> h.value }
|
115
112
|
mail.header_fields.each do |header|
|
116
|
-
|
117
|
-
|
118
|
-
# String form
|
119
|
-
name = header.name.to_s.downcase
|
120
|
-
else
|
121
|
-
name = header.name.to_s
|
122
|
-
end
|
113
|
+
# 'header.name' can sometimes be a Mail::Multibyte::Chars, get it in String form
|
114
|
+
name = @lowercase_headers ? header.name.to_s.downcase : header.name.to_s
|
123
115
|
# Call .decoded on the header in case it's in encoded-word form.
|
124
116
|
# Details at:
|
125
117
|
# https://github.com/mikel/mail/blob/master/README.md#encodings
|
@@ -129,21 +121,24 @@ class LogStash::Inputs::IMAP < LogStash::Inputs::Base
|
|
129
121
|
# Assume we already processed the 'date' above.
|
130
122
|
next if name == "Date"
|
131
123
|
|
132
|
-
case event[name]
|
124
|
+
case (field = event[name])
|
125
|
+
when String
|
133
126
|
# promote string to array if a header appears multiple times
|
134
127
|
# (like 'received')
|
135
|
-
|
136
|
-
|
137
|
-
|
128
|
+
event[name] = [field, value]
|
129
|
+
when Array
|
130
|
+
field << value
|
131
|
+
event[name] = field
|
132
|
+
when nil
|
133
|
+
event[name] = value
|
138
134
|
end
|
139
|
-
end
|
135
|
+
end
|
140
136
|
|
141
137
|
decorate(event)
|
142
138
|
event
|
143
139
|
end
|
144
|
-
end
|
140
|
+
end
|
145
141
|
|
146
|
-
public
|
147
142
|
def stop
|
148
143
|
Stud.stop!(@run_thread)
|
149
144
|
$stdin.close
|
@@ -159,4 +154,4 @@ class LogStash::Inputs::IMAP < LogStash::Inputs::Base
|
|
159
154
|
s.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace)
|
160
155
|
end
|
161
156
|
end
|
162
|
-
end
|
157
|
+
end
|
data/logstash-input-imap.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-imap'
|
4
|
-
s.version = '2.0.
|
4
|
+
s.version = '2.0.3'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Read mail from IMAP servers"
|
7
7
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-imap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
14
|
+
name: logstash-core
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - '>='
|
17
18
|
- !ruby/object:Gem::Version
|
@@ -19,10 +20,7 @@ dependencies:
|
|
19
20
|
- - <
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 3.0.0
|
22
|
-
|
23
|
-
prerelease: false
|
24
|
-
type: :runtime
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
26
24
|
requirements:
|
27
25
|
- - '>='
|
28
26
|
- !ruby/object:Gem::Version
|
@@ -30,62 +28,64 @@ dependencies:
|
|
30
28
|
- - <
|
31
29
|
- !ruby/object:Gem::Version
|
32
30
|
version: 3.0.0
|
31
|
+
prerelease: false
|
32
|
+
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
+
name: logstash-codec-plain
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
34
40
|
requirement: !ruby/object:Gem::Requirement
|
35
41
|
requirements:
|
36
42
|
- - '>='
|
37
43
|
- !ruby/object:Gem::Version
|
38
44
|
version: '0'
|
39
|
-
name: logstash-codec-plain
|
40
45
|
prerelease: false
|
41
46
|
type: :runtime
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mail
|
42
49
|
version_requirements: !ruby/object:Gem::Requirement
|
43
50
|
requirements:
|
44
51
|
- - '>='
|
45
52
|
- !ruby/object:Gem::Version
|
46
53
|
version: '0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
54
|
requirement: !ruby/object:Gem::Requirement
|
49
55
|
requirements:
|
50
56
|
- - '>='
|
51
57
|
- !ruby/object:Gem::Version
|
52
58
|
version: '0'
|
53
|
-
name: mail
|
54
59
|
prerelease: false
|
55
60
|
type: :runtime
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: stud
|
56
63
|
version_requirements: !ruby/object:Gem::Requirement
|
57
64
|
requirements:
|
58
|
-
- -
|
65
|
+
- - ~>
|
59
66
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
61
|
-
- !ruby/object:Gem::Dependency
|
67
|
+
version: 0.0.22
|
62
68
|
requirement: !ruby/object:Gem::Requirement
|
63
69
|
requirements:
|
64
70
|
- - ~>
|
65
71
|
- !ruby/object:Gem::Version
|
66
72
|
version: 0.0.22
|
67
|
-
name: stud
|
68
73
|
prerelease: false
|
69
74
|
type: :runtime
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: logstash-devutils
|
70
77
|
version_requirements: !ruby/object:Gem::Requirement
|
71
78
|
requirements:
|
72
|
-
- -
|
79
|
+
- - '>='
|
73
80
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0
|
75
|
-
- !ruby/object:Gem::Dependency
|
81
|
+
version: '0'
|
76
82
|
requirement: !ruby/object:Gem::Requirement
|
77
83
|
requirements:
|
78
84
|
- - '>='
|
79
85
|
- !ruby/object:Gem::Version
|
80
86
|
version: '0'
|
81
|
-
name: logstash-devutils
|
82
87
|
prerelease: false
|
83
88
|
type: :development
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - '>='
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
89
89
|
description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
|
90
90
|
email: info@elastic.co
|
91
91
|
executables: []
|