sensu-plugins-mailer 0.0.2 → 0.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: ecef112172596b50f7a2c8d6e28aad96fcc93abf
4
- data.tar.gz: ca05e61e1f7eab6196d8aee1e7215f5f83ebc9dc
3
+ metadata.gz: 60f0a156a68477698c96e7697f9eaf5743d65dbb
4
+ data.tar.gz: bab7b53712fe7e5421d9546f26f73eea0df821c7
5
5
  SHA512:
6
- metadata.gz: c89aacc88b4bee442d20b3f553d7cf80f4d2bfe17dc9023e11493c0c2ed255f34540405e8597ae1062741fcf0ac83be54a515afff7bad42e387d003b7c8aa582
7
- data.tar.gz: 901e8d3bc1daefb70d3c0b2d2cd99fb348d3e8c6ef97cf371b64a495bc47b03771ca739d7f4b98cb5c744a779a5480a04213e875e80f56f85f0b2b3504f2a595
6
+ metadata.gz: 05fa0bf017df15111a9951ab030e3d3cb8a9dd01a5266c163517b1d6fd4df5fdfbd9adc39b7de722627fca579604cc7bc957de16745ce1b2deecf22adc6b56bf
7
+ data.tar.gz: 3d5991a161fbc56721a781d30accc430814e929a05f14c6ef969dcda8ec7dcf927115863f66145750d00570eb68b522c75268d2f6c5b5254c9c0395fd896397b
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -3,15 +3,29 @@ This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
- ## Unreleased][unreleased]
6
+ ## Unreleased
7
7
 
8
- ## [0.0.3] - 2015-07-14
8
+ ## 0.1.0 - 2015-11-17
9
+ ### Added
10
+ - Ability to use custom ERB template for mail message
11
+ - Ability to specify a custom timeout interval for sending mail
12
+ - Content type option
13
+ - Add essential information to headers
14
+
15
+ ### Fixed
16
+ - Use correct mailgun gem
17
+ - Correct password replacement
18
+
19
+ ### Changed
20
+ - Upgraded to rubocop 0.32.1
21
+
22
+ ## [0.0.2] - [2015-07-14]
9
23
  ### Changed
10
24
  - updated sensu-plugin gem to 1.2.0
11
25
  - updated documentation links in the README and CONTRIBUTING
12
26
  - puts deps in alpha order in the gemspec and rakefile
13
27
 
14
- ## 0.0.1 - 2015-06-04
28
+ ## [0.0.1] - [2015-06-04]
15
29
 
16
30
  ### Added
17
31
  - initial release
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Sensu-Plugins-mailer
2
2
 
3
- [ ![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-mailer.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-mailer)
3
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-mailer.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-mailer)
4
4
  [![Gem Version](https://badge.fury.io/rb/sensu-plugins-mailer.svg)](http://badge.fury.io/rb/sensu-plugins-mailer)
5
5
  [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-mailer/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-mailer)
6
6
  [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-mailer/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-mailer)
@@ -24,6 +24,10 @@ The following three configuration variables must be set if you want mailer to us
24
24
 
25
25
  There is an optional subscriptions hash which can be added to your mailer.json file. This subscriptions hash allows you to define individual mail_to addresses for a given subscription. When the mailer handler runs it will check the clients subscriptions and build a mail_to string with the default mailer.mail_to address as well as any subscriptions the client subscribes to where a mail_to address is found. There can be N number of hashes inside of subscriptions but the key for a given hash inside of subscriptions must match a subscription name.
26
26
 
27
+ Optionally, you can specify your own ERB template file to use for the message
28
+ body. The order of precedence for templates is: command-line argument (-t),
29
+ client config called "template", the mailer handler config, default.
30
+
27
31
  ```json
28
32
  {
29
33
  "mailer": {
@@ -32,9 +36,11 @@ There is an optional subscriptions hash which can be added to your mailer.json f
32
36
  "smtp_address": "smtp.example.org",
33
37
  "smtp_port": "25",
34
38
  "smtp_domain": "example.org",
39
+ "template": "/optional/path/to/template.erb",
35
40
  "subscriptions": {
36
- "subscription_name": {
37
- "mail_to": "teamemail@example.com"
41
+ "subscription_name": {
42
+ "mail_to": "teamemail@example.com"
43
+ }
38
44
  }
39
45
  }
40
46
  }
@@ -29,7 +29,7 @@
29
29
  # for details.
30
30
 
31
31
  require 'sensu-handler'
32
- require 'mailgun'
32
+ require 'mailgun-ruby'
33
33
  require 'timeout'
34
34
 
35
35
  class Mailer < Sensu::Handler
@@ -17,6 +17,7 @@
17
17
  require 'sensu-handler'
18
18
  require 'mail'
19
19
  require 'timeout'
20
+ require 'erubis'
20
21
 
21
22
  # patch to fix Exim delivery_method: https://github.com/mikel/mail/pull/546
22
23
  # #YELLOW
@@ -36,6 +37,19 @@ class Mailer < Sensu::Handler
36
37
  description: 'Config Name',
37
38
  short: '-j JsonConfig',
38
39
  long: '--json_config JsonConfig',
40
+ required: false,
41
+ default: 'mailer'
42
+
43
+ option :template,
44
+ description: 'Message template to use',
45
+ short: '-t TemplateFile',
46
+ long: '--template TemplateFile',
47
+ required: false
48
+
49
+ option :content_type,
50
+ description: 'Content-type of message',
51
+ short: '-c ContentType',
52
+ long: '--content_type ContentType',
39
53
  required: false
40
54
 
41
55
  def short_name
@@ -59,8 +73,26 @@ class Mailer < Sensu::Handler
59
73
  end
60
74
  end
61
75
 
76
+ def parse_content_type
77
+ if config[:content_type]
78
+ use = config[:content_type]
79
+ elsif @event['check']['content_type']
80
+ use = @event['check']['content_type']
81
+ elsif settings[config[:json_config]]['content_type']
82
+ use = settings[config[:json_config]]['content_type']
83
+ else
84
+ use = 'plain'
85
+ end
86
+
87
+ if use.downcase == 'html'
88
+ 'text/html; charset=UTF-8'
89
+ else
90
+ 'text/plain; charset=ISO-8859-1'
91
+ end
92
+ end
93
+
62
94
  def build_mail_to_list
63
- json_config = config[:json_config] || 'mailer'
95
+ json_config = config[:json_config]
64
96
  mail_to = @event['client']['mail_to'] || settings[json_config]['mail_to']
65
97
  if settings[json_config].key?('subscriptions') && @event['check']['subscribers']
66
98
  @event['check']['subscribers'].each do |sub|
@@ -72,9 +104,45 @@ class Mailer < Sensu::Handler
72
104
  mail_to
73
105
  end
74
106
 
75
- def handle # rubocop:disable all
76
- json_config = config[:json_config] || 'mailer'
107
+ def message_template
108
+ return config[:template] if config[:template]
109
+ return @event['check']['template'] if @event['check']['template']
110
+ return settings[config[:json_config]]['template'] if settings[config[:json_config]]['template']
111
+ nil
112
+ end
113
+
114
+ def build_body
115
+ json_config = config[:json_config]
77
116
  admin_gui = settings[json_config]['admin_gui'] || 'http://localhost:8080/'
117
+ # try to redact passwords from output and command
118
+ output = "#{@event['check']['output']}".gsub(/(\s-p|\s-P|\s--password)(\s*\S+)/, '\1 <password omitted>')
119
+ command = "#{@event['check']['command']}".gsub(/(\s-p|\s-P|\s--password)(\s*\S+)/, '\1 <password omitted>')
120
+ playbook = "Playbook: #{@event['check']['playbook']}" if @event['check']['playbook']
121
+
122
+ if message_template && File.readable?(message_template)
123
+ template = File.read(message_template)
124
+ else
125
+ template = <<-BODY.gsub(/^\s+/, '')
126
+ <%= @output %>
127
+ Admin GUI: <%= admin_gui %>
128
+ Host: <%= @event['client']['name'] %>
129
+ Timestamp: <%= Time.at(@event['check']['issued']) %>
130
+ Address: <%= @event['client']['address'] %>
131
+ Check Name: <%= @event['check']['name'] %>
132
+ Command: <%= command %>
133
+ Status: <%= status_to_string %>
134
+ Occurrences: <%= @event['occurrences'] %>
135
+ <%= playbook %>
136
+ BODY
137
+ end
138
+ eruby = Erubis::Eruby.new(template)
139
+ eruby.result(binding)
140
+ end
141
+
142
+ def handle
143
+ json_config = config[:json_config]
144
+ body = build_body
145
+ content_type = parse_content_type
78
146
  mail_to = build_mail_to_list
79
147
  mail_from = settings[json_config]['mail_from']
80
148
  reply_to = settings[json_config]['reply_to'] || mail_from
@@ -88,23 +156,18 @@ class Mailer < Sensu::Handler
88
156
  smtp_password = settings[json_config]['smtp_password'] || nil
89
157
  smtp_authentication = settings[json_config]['smtp_authentication'] || :plain
90
158
  smtp_enable_starttls_auto = settings[json_config]['smtp_enable_starttls_auto'] == 'false' ? false : true
91
- # try to redact passwords from output and command
92
- output = "#{@event['check']['output']}".gsub(/(-p|-P|--password)\s*\S+/, '\1 <password redacted>')
93
- command = "#{@event['check']['command']}".gsub(/(-p|-P|--password)\s*\S+/, '\1 <password redacted>')
94
159
 
95
- playbook = "Playbook: #{@event['check']['playbook']}" if @event['check']['playbook']
96
- body = <<-BODY.gsub(/^\s+/, '')
97
- #{output}
98
- Admin GUI: #{admin_gui}
99
- Host: #{@event['client']['name']}
100
- Timestamp: #{Time.at(@event['check']['issued'])}
101
- Address: #{@event['client']['address']}
102
- Check Name: #{@event['check']['name']}
103
- Command: #{command}
104
- Status: #{status_to_string}
105
- Occurrences: #{@event['occurrences']}
106
- #{playbook}
107
- BODY
160
+ timeout_interval = settings[json_config]['timeout'] || 10
161
+
162
+ headers = {
163
+ 'X-Sensu-Host' => "#{@event['client']['name']}",
164
+ 'X-Sensu-Timestamp' => "#{Time.at(@event['check']['issued'])}",
165
+ 'X-Sensu-Address' => "#{@event['client']['address']}",
166
+ 'X-Sensu-Check-Name' => "#{@event['check']['name']}",
167
+ 'X-Sensu-Status' => "#{status_to_string}",
168
+ 'X-Sensu-Occurrences' => "#{@event['occurrences']}"
169
+ }
170
+
108
171
  if @event['check']['notification'].nil?
109
172
  subject = "#{action_to_string} - #{short_name}: #{status_to_string}"
110
173
  else
@@ -133,13 +196,15 @@ class Mailer < Sensu::Handler
133
196
  end
134
197
 
135
198
  begin
136
- timeout 10 do
199
+ timeout timeout_interval do
137
200
  Mail.deliver do
138
201
  to mail_to
139
202
  from mail_from
140
203
  reply_to reply_to
141
204
  subject subject
142
205
  body body
206
+ headers headers
207
+ content_type content_type
143
208
  end
144
209
 
145
210
  puts 'mail -- sent alert for ' + short_name + ' to ' + mail_to.to_s
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsMailer
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 0
5
- PATCH = 2
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
data.tar.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- _�k4K7��a0��E�ܢ�J0<U�� ,(Uw(B�cwؽk]K�(��ŀ���� ��4E1��a�Gmj���4tI��*�`H�3y�ؐ��O��~��@�W���x��4�iC"�~\�\ZL��;F@j�J�/j��FK%��,�{��O3�ô_�Sˠ��ߤ@���Tﰨa��]�Hq�}��$#%T����"�K��:r
2
- �5��Xu��^�\6����-�h��T�������VO
1
+ ���Ha5h���{]���%�����K�J;�[�8wI�ǡd{��d����~�� ��ܦx|��<��4�T��TAR���� ζ��>�����E�i;���� �ܲ���_�0PZ^��X�r�
2
+ 22�s�G���F����G�F�i<C�k��bm}��Jr�CԿ����"M<�(�_)Y�^�_ əa��}@|P����̳\�VV�����B�ͦ1oC(5���ub�15[/i$u�-T�~GoP����
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
@@ -30,7 +30,7 @@ cert_chain:
30
30
  8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
31
  HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
32
  -----END CERTIFICATE-----
33
- date: 2015-07-14 00:00:00.000000000 Z
33
+ date: 2015-11-18 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: aws
@@ -61,19 +61,19 @@ dependencies:
61
61
  - !ruby/object:Gem::Version
62
62
  version: 2.6.3
63
63
  - !ruby/object:Gem::Dependency
64
- name: mailgun
64
+ name: mailgun-ruby
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: '0.8'
69
+ version: 1.0.3
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - '='
75
75
  - !ruby/object:Gem::Version
76
- version: '0.8'
76
+ version: 1.0.3
77
77
  - !ruby/object:Gem::Dependency
78
78
  name: sensu-plugin
79
79
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +88,20 @@ dependencies:
88
88
  - - '='
89
89
  - !ruby/object:Gem::Version
90
90
  version: 1.2.0
91
+ - !ruby/object:Gem::Dependency
92
+ name: erubis
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '='
96
+ - !ruby/object:Gem::Version
97
+ version: 2.7.0
98
+ type: :runtime
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 2.7.0
91
105
  - !ruby/object:Gem::Dependency
92
106
  name: bundler
93
107
  requirement: !ruby/object:Gem::Requirement
@@ -178,14 +192,14 @@ dependencies:
178
192
  requirements:
179
193
  - - '='
180
194
  - !ruby/object:Gem::Version
181
- version: '0.30'
195
+ version: 0.32.1
182
196
  type: :development
183
197
  prerelease: false
184
198
  version_requirements: !ruby/object:Gem::Requirement
185
199
  requirements:
186
200
  - - '='
187
201
  - !ruby/object:Gem::Version
188
- version: '0.30'
202
+ version: 0.32.1
189
203
  - !ruby/object:Gem::Dependency
190
204
  name: rspec
191
205
  requirement: !ruby/object:Gem::Requirement
@@ -257,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
271
  version: '0'
258
272
  requirements: []
259
273
  rubyforge_project:
260
- rubygems_version: 2.4.6
274
+ rubygems_version: 2.4.8
261
275
  signing_key:
262
276
  specification_version: 4
263
277
  summary: Sensu plugins for mailer
metadata.gz.sig CHANGED
Binary file