sensu-plugins-mailer 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e06c5e384471722d7c338d98fcde9c61f3255f0c
4
- data.tar.gz: 5ddf68c6d934fa6a65efa8ceebe1967cb4f30816
3
+ metadata.gz: 914ffd464cbc0cca8d351da9a48c9d09fb81e061
4
+ data.tar.gz: 93f37933624d9923666492a9084c9a3f270d9868
5
5
  SHA512:
6
- metadata.gz: e208de9a67fb9c5239c92a60e8d1148365b7317da845615e9ddbb8d2904adbd609fb014a1cf9af092862a94ec8777ef8a64f13aae6c5fb6545a519555319bb7d
7
- data.tar.gz: 1b4fa18f200b0d072d8dbb7b3a0acbc5706fb7fc51af93e4612ee53a12b8ccac14de4ecaf2e861c01f1b81fe322a808e7bc585e1e0cc67486a7f7cd2ed1ffc70
6
+ metadata.gz: 3e03b487e6b264cab942d39b78b989908430ab3ff724b1cee7a6925cb43fe55ec8eb93896e14278c8e7e3a3dea21de26ec1c0bafaee1bec4e1c56a2115d464df
7
+ data.tar.gz: 32021357210d7be11fee1348f7fba666119379535595dd4b9eca90d3b7267428e9b6c1c06adba1ae9e59d1677f3d18e6d200374a5418b7642a0116ca044cfc19
data/CHANGELOG.md CHANGED
@@ -4,11 +4,16 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
6
  ## [Unreleased]
7
+ ## [1.1.0] - 2017-06-01
8
+ ### Fixed
9
+ - handler-mailer.rb - revert the commit which makes email go to wrong addresses
10
+ - handler-mailer.rb - change `json_config` to `json_config_name` for clarity
11
+ and add documentation
7
12
 
8
13
  ## [1.0.0] - 2016-06-23
9
14
  ### Fixed
10
- - fixing timeout deprecation for ruby 2.3.0
11
- - handler-mailer-mailgun.rb/handler-mailer-ses.rb: fixing undefined local variable or method params error
15
+ - fix timeout deprecation for ruby 2.3.0
16
+ - handler-mailer-mailgun.rb/handler-mailer-ses.rb: fix undefined local variable or method params error
12
17
 
13
18
  ### Removed
14
19
  - Support for Ruby 1.9.3; Added support for Ruby 2.3.0
@@ -79,7 +84,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
79
84
  ### Added
80
85
  - initial release
81
86
 
82
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/1.0.0...HEAD
87
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/1.1.0...HEAD
88
+ [1.1.0]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/1.0.0...1.1.0
83
89
  [1.0.0]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/0.3.1...1.0.0
84
90
  [0.3.1]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/0.3.0...0.3.1
85
91
  [0.3.0]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/0.2.0...0.3.0
@@ -91,4 +97,3 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
91
97
  [0.1.1]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/0.1.0...0.1.1
92
98
  [0.1.0]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/0.0.2...0.1.0
93
99
  [0.0.2]: https://github.com/sensu-plugins/sensu-plugins-mailer/compare/0.0.1...0.0.2
94
-
data/README.md CHANGED
@@ -83,9 +83,35 @@ client config called "template", the mailer handler config, default.
83
83
  }
84
84
  }
85
85
  ```
86
+ By default, the handler will use `plain` as the SMTP authentication type, but you may also specify `"smtp_authentication": "ntlm"` for compatible servers, e.g. Microsoft Exchange.
86
87
 
87
88
  ## Installation
88
89
 
89
90
  [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
90
91
 
92
+ Create a handler file in `/etc/sensu/conf.d` with the following content, replacing with your own configuration:
93
+
94
+ ```json
95
+ {
96
+ "mailer" : {
97
+ "admin_gui" : "http://localhost:3000",
98
+ "mail_from": "from@email.com",
99
+ "mail_to": "to@email.com",
100
+ "delivery_method": "smtp",
101
+ "smtp_address": "localhost",
102
+ "smtp_port": "25",
103
+ "smtp_domain": "localhost.local_domain",
104
+ "smtp_enable_starttls_auto": "true",
105
+ "smtp_username" : "username",
106
+ "smtp_password" : "XXXXXXXX"
107
+ },
108
+ "handlers": {
109
+ "mailer": {
110
+ "type": "pipe",
111
+ "command": "/opt/sensu/embedded/bin/handler-mailer.rb"
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
91
117
  ## Notes
@@ -33,6 +33,17 @@ require 'mailgun'
33
33
  require 'timeout'
34
34
 
35
35
  class Mailer < Sensu::Handler
36
+ option :json_config,
37
+ description: 'Config Name',
38
+ short: '-j JsonConfig',
39
+ long: '--json_config JsonConfig',
40
+ required: false,
41
+ default: 'mailer-mailgun'
42
+
43
+ def json_config
44
+ @json_config ||= config[:json_config]
45
+ end
46
+
36
47
  def short_name
37
48
  @event['client']['name'] + '/' + @event['check']['name']
38
49
  end
@@ -43,11 +54,11 @@ class Mailer < Sensu::Handler
43
54
 
44
55
  def handle
45
56
  params = {
46
- mail_to: settings['mailer-mailgun']['mail_to'],
47
- mail_from: settings['mailer-mailgun']['mail_from'],
48
- mg_apikey: settings['mailer-mailgun']['mg_apikey'],
49
- mg_domain: settings['mailer-mailgun']['mg_domain'],
50
- subject_prefix: settings['mailer-mailgun']['subject_prefix']
57
+ mail_to: settings[json_config]['mail_to'],
58
+ mail_from: settings[json_config]['mail_from'],
59
+ mg_apikey: settings[json_config]['mg_apikey'],
60
+ mg_domain: settings[json_config]['mg_domain'],
61
+ subject_prefix: settings[json_config]['subject_prefix']
51
62
  }
52
63
 
53
64
  body = <<-BODY.gsub(/^ {14}/, '')
@@ -16,6 +16,17 @@ require 'aws/ses'
16
16
  require 'timeout'
17
17
 
18
18
  class Mailer < Sensu::Handler
19
+ option :json_config,
20
+ description: 'Config Name',
21
+ short: '-j JsonConfig',
22
+ long: '--json_config JsonConfig',
23
+ required: false,
24
+ default: 'mailer-ses'
25
+
26
+ def json_config
27
+ @json_config ||= config[:json_config]
28
+ end
29
+
19
30
  def short_name
20
31
  @event['client']['name'] + '/' + @event['check']['name']
21
32
  end
@@ -26,12 +37,12 @@ class Mailer < Sensu::Handler
26
37
 
27
38
  def handle
28
39
  params = {
29
- mail_to: settings['mailer-ses']['mail_to'],
30
- mail_from: settings['mailer-ses']['mail_from'],
31
- aws_access_key: settings['mailer-ses']['aws_access_key'],
32
- aws_secret_key: settings['mailer-ses']['aws_secret_key'],
33
- aws_ses_endpoint: settings['mailer-ses']['aws_ses_endpoint'],
34
- subject_prefix: settings['mailer-ses']['subject_prefix']
40
+ mail_to: settings[json_config]['mail_to'],
41
+ mail_from: settings[json_config]['mail_from'],
42
+ aws_access_key: settings[json_config]['aws_access_key'],
43
+ aws_secret_key: settings[json_config]['aws_secret_key'],
44
+ aws_ses_endpoint: settings[json_config]['aws_ses_endpoint'],
45
+ subject_prefix: settings[json_config]['subject_prefix']
35
46
  }
36
47
 
37
48
  body = <<-BODY.gsub(/^ {14}/, '')
@@ -10,7 +10,7 @@
10
10
  # for details.
11
11
 
12
12
  # Note: The default mailer config is fetched from the predefined json config file which is "mailer.json" or any other
13
- # file defiend using the "json_config" command line option. The mailing list could also be configured on a per client basis
13
+ # file defined using the "json_config" command line option. The mailing list could also be configured on a per client basis
14
14
  # by defining the "mail_to" attribute in the client config file. This will override the default mailing list where the
15
15
  # alerts are being routed to for that particular client.
16
16
 
@@ -18,6 +18,8 @@ require 'sensu-handler'
18
18
  require 'mail'
19
19
  require 'timeout'
20
20
  require 'erubis'
21
+ require 'set'
22
+ require 'ntlm/smtp'
21
23
 
22
24
  # patch to fix Exim delivery_method: https://github.com/mikel/mail/pull/546
23
25
  # #YELLOW
@@ -33,8 +35,8 @@ module ::Mail # rubocop:disable Style/ClassAndModuleChildren
33
35
  end
34
36
 
35
37
  class Mailer < Sensu::Handler
36
- option :json_config,
37
- description: 'Config Name',
38
+ option :json_config_name,
39
+ description: 'Name of the JSON Configuration block in Sensu',
38
40
  short: '-j JsonConfig',
39
41
  long: '--json_config JsonConfig',
40
42
  required: false,
@@ -58,6 +60,32 @@ class Mailer < Sensu::Handler
58
60
  long: '--subject_prefix prefix',
59
61
  required: false
60
62
 
63
+ # JSON configuration settings typically defined in the handler
64
+ # file for mailer. JSON Config Name defaultly looks for a block
65
+ # named 'mailer', as seen in the Installation step of the README
66
+ #
67
+ # @example
68
+ #
69
+ # ```json
70
+ # {
71
+ # "admin_gui": "http://localhost:3000",
72
+ # "mail_from": "from@email.com",
73
+ # "mail_to": "to@email.com",
74
+ # "delivery_method": "smtp",
75
+ # "smtp_address": "localhost",
76
+ # "smtp_port": "25",
77
+ # "smtp_domain": "localhost.local_domain",
78
+ # "smtp_enable_starttls_auto": "true",
79
+ # "smtp_username": "username",
80
+ # "smtp_password": "XXXXXXXX"
81
+ # }
82
+ # ```
83
+ #
84
+ # @return [Hash]
85
+ def json_config_settings
86
+ settings[config[:json_config_name]]
87
+ end
88
+
61
89
  def short_name
62
90
  @event['client']['name'] + '/' + @event['check']['name']
63
91
  end
@@ -69,8 +97,8 @@ class Mailer < Sensu::Handler
69
97
  def prefix_subject
70
98
  if config[:subject_prefix]
71
99
  config[:subject_prefix] + ' '
72
- elsif settings[config[:json_config]]['subject_prefix']
73
- settings[config[:json_config]]['subject_prefix'] + ' '
100
+ elsif json_config_settings['subject_prefix']
101
+ json_config_settings['subject_prefix'] + ' '
74
102
  else
75
103
  ''
76
104
  end
@@ -94,13 +122,13 @@ class Mailer < Sensu::Handler
94
122
  config[:content_type]
95
123
  elsif @event['check']['content_type']
96
124
  @event['check']['content_type']
97
- elsif settings[config[:json_config]]['content_type']
98
- settings[config[:json_config]]['content_type']
125
+ elsif json_config_settings['content_type']
126
+ json_config_settings['content_type']
99
127
  else
100
128
  'plain'
101
129
  end
102
130
 
103
- if use.casecmp('html') == 0
131
+ if use.casecmp('html').zero?
104
132
  'text/html; charset=UTF-8'
105
133
  else
106
134
  'text/plain; charset=ISO-8859-1'
@@ -108,37 +136,27 @@ class Mailer < Sensu::Handler
108
136
  end
109
137
 
110
138
  def build_mail_to_list
111
- json_config = config[:json_config]
112
- mail_to = @event['client']['mail_to'] || settings[json_config]['mail_to']
113
- if settings[json_config].key?('subscriptions')
114
- if @event['check']['subscribers']
115
- @event['check']['subscribers'].each do |sub|
116
- if settings[json_config]['subscriptions'].key?(sub)
117
- mail_to << ", #{settings[json_config]['subscriptions'][sub]['mail_to']}"
118
- end
119
- end
120
- end
121
- if @event['client']['subscriptions']
122
- @event['client']['subscriptions'].each do |sub|
123
- if settings[json_config]['subscriptions'].key?(sub)
124
- mail_to << ", #{settings[json_config]['subscriptions'][sub]['mail_to']}"
125
- end
139
+ mail_to = Set.new
140
+ mail_to.add(@event['client']['mail_to'] || json_config_settings['mail_to'])
141
+ if json_config_settings.key?('subscriptions') && @event['check']['subscribers']
142
+ @event['check']['subscribers'].each do |sub|
143
+ if json_config_settings['subscriptions'].key?(sub)
144
+ mail_to.add(json_config_settings['subscriptions'][sub]['mail_to'].to_s)
126
145
  end
127
146
  end
128
147
  end
129
- mail_to
148
+ mail_to.to_a.join(', ')
130
149
  end
131
150
 
132
151
  def message_template
133
152
  return config[:template] if config[:template]
134
153
  return @event['check']['template'] if @event['check']['template']
135
- return settings[config[:json_config]]['template'] if settings[config[:json_config]]['template']
154
+ return json_config_settings['template'] if json_config_settings['template']
136
155
  nil
137
156
  end
138
157
 
139
158
  def build_body
140
- json_config = config[:json_config]
141
- admin_gui = settings[json_config]['admin_gui'] || 'http://localhost:8080/'
159
+ admin_gui = json_config_settings['admin_gui'] || 'http://localhost:8080/'
142
160
  # try to redact passwords from output and command
143
161
  output = (@event['check']['output']).to_s.gsub(/(\s-p|\s-P|\s--password)(\s*\S+)/, '\1 <password omitted>')
144
162
  command = (@event['check']['command']).to_s.gsub(/(\s-p|\s-P|\s--password)(\s*\S+)/, '\1 <password omitted>')
@@ -165,25 +183,24 @@ class Mailer < Sensu::Handler
165
183
  end
166
184
 
167
185
  def handle
168
- json_config = config[:json_config]
169
186
  body = build_body
170
187
  content_type = parse_content_type
171
188
  mail_to = build_mail_to_list
172
- mail_from = settings[json_config]['mail_from']
173
- reply_to = settings[json_config]['reply_to'] || mail_from
189
+ mail_from = json_config_settings['mail_from']
190
+ reply_to = json_config_settings['reply_to'] || mail_from
174
191
 
175
- delivery_method = settings[json_config]['delivery_method'] || 'smtp'
176
- smtp_address = settings[json_config]['smtp_address'] || 'localhost'
177
- smtp_port = settings[json_config]['smtp_port'] || '25'
178
- smtp_domain = settings[json_config]['smtp_domain'] || 'localhost.localdomain'
192
+ delivery_method = json_config_settings['delivery_method'] || 'smtp'
193
+ smtp_address = json_config_settings['smtp_address'] || 'localhost'
194
+ smtp_port = json_config_settings['smtp_port'] || '25'
195
+ smtp_domain = json_config_settings['smtp_domain'] || 'localhost.localdomain'
179
196
 
180
- smtp_username = settings[json_config]['smtp_username'] || nil
181
- smtp_password = settings[json_config]['smtp_password'] || nil
182
- smtp_authentication = settings[json_config]['smtp_authentication'] || :plain
183
- smtp_use_tls = settings[json_config]['smtp_use_tls'] || nil
184
- smtp_enable_starttls_auto = settings[json_config]['smtp_enable_starttls_auto'] == 'false' ? false : true
197
+ smtp_username = json_config_settings['smtp_username'] || nil
198
+ smtp_password = json_config_settings['smtp_password'] || nil
199
+ smtp_authentication = json_config_settings['smtp_authentication'] || :plain
200
+ smtp_use_tls = json_config_settings['smtp_use_tls'] || nil
201
+ smtp_enable_starttls_auto = json_config_settings['smtp_enable_starttls_auto'] == 'false' ? false : true
185
202
 
186
- timeout_interval = settings[json_config]['timeout'] || 10
203
+ timeout_interval = json_config_settings['timeout'] || 10
187
204
 
188
205
  headers = {
189
206
  'X-Sensu-Host' => (@event['client']['name']).to_s,
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsMailer
2
2
  module Version
3
3
  MAJOR = 1
4
- MINOR = 0
4
+ MINOR = 1
5
5
  PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-23 00:00:00.000000000 Z
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-ses
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 2.7.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby-ntlm
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.0.3
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.0.3
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +220,7 @@ dependencies:
206
220
  - - "~>"
207
221
  - !ruby/object:Gem::Version
208
222
  version: '0.8'
209
- description: Sensu mailer plugins
223
+ description: Provides mail output for Sensu
210
224
  email: "<sensu-users@googlegroups.com>"
211
225
  executables:
212
226
  - handler-mailer-mailgun.rb
@@ -249,9 +263,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
263
  version: '0'
250
264
  requirements: []
251
265
  rubyforge_project:
252
- rubygems_version: 2.5.1
266
+ rubygems_version: 2.4.5
253
267
  signing_key:
254
268
  specification_version: 4
255
269
  summary: Sensu plugins for mailer
256
270
  test_files: []
257
- has_rdoc: