aboutsummaryrefslogtreecommitdiff
path: root/lib/mauve/notifiers
diff options
context:
space:
mode:
authorPatrick J Cherry <patrick@bytemark.co.uk>2014-07-03 12:01:25 +0100
committerPatrick J Cherry <patrick@bytemark.co.uk>2014-07-03 12:01:25 +0100
commit02cd939814dc8aebc80b5a23a3ba6b68f4118864 (patch)
tree3e74d4e098187fc8e8536c9cef98efa15347c3b0 /lib/mauve/notifiers
parentf6ddf58350e015ee49d35d3ac4a74cce53e62102 (diff)
parent9e8ee3bec749abf11a71003efd201e1e3fb0843f (diff)
Merge
Diffstat (limited to 'lib/mauve/notifiers')
-rw-r--r--lib/mauve/notifiers/debug.rb2
-rw-r--r--lib/mauve/notifiers/sms_clockwork.rb72
l---------[-rw-r--r--]lib/mauve/notifiers/templates/email_subject.txt.erb23
l---------[-rw-r--r--]lib/mauve/notifiers/templates/sms.txt.erb23
-rw-r--r--lib/mauve/notifiers/templates/xmpp.html.erb6
-rw-r--r--lib/mauve/notifiers/templates/xmpp.txt.erb6
6 files changed, 81 insertions, 51 deletions
diff --git a/lib/mauve/notifiers/debug.rb b/lib/mauve/notifiers/debug.rb
index a9afc52..b3e88e2 100644
--- a/lib/mauve/notifiers/debug.rb
+++ b/lib/mauve/notifiers/debug.rb
@@ -69,7 +69,7 @@ module Mauve
deliver_to_queue << [Time.now, self.class, destination, message] if deliver_to_queue
- if @disable_normal_delivery
+ if @disable_normal_delivery
true # pretend it happened OK if we're just testing
else
send_alert_without_debug(destination, alert, all_alerts, conditions)
diff --git a/lib/mauve/notifiers/sms_clockwork.rb b/lib/mauve/notifiers/sms_clockwork.rb
new file mode 100644
index 0000000..b4bd860
--- /dev/null
+++ b/lib/mauve/notifiers/sms_clockwork.rb
@@ -0,0 +1,72 @@
+require 'mauve/notifiers/debug'
+require 'cgi'
+
+module Mauve
+ module Notifiers
+ module Sms
+
+ require 'net/https'
+
+ class Clockwork
+ GATEWAY = "https://api.clockworksms.com/http/send.aspx"
+
+ attr_writer :apikey, :from
+ attr_reader :name
+
+ def initialize(name)
+ @name = name
+ end
+
+ def send_alert(destination, alert, all_alerts, conditions = {})
+ uri = URI.parse(GATEWAY)
+
+ opts_string = {
+ :key => @apikey,
+ :to => normalize_number(destination),
+ :content => prepare_message(destination, alert, all_alerts, conditions),
+ :from => @from,
+ }.map { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join("&")
+
+ http = Net::HTTP.new(uri.host, uri.port)
+ if uri.port == 443
+ http.use_ssl = true
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+ end
+ response, data = http.post(uri.path, opts_string, {
+ 'Content-Type' => 'application/x-www-form-urlencoded',
+ 'Content-Length' => opts_string.length.to_s
+ })
+
+ if response.kind_of?(Net::HTTPSuccess)
+ #
+ # Woo -- return true!
+ #
+ true
+ else
+ false
+ end
+ end
+
+ protected
+ def prepare_message(destination, alert, all_alerts, conditions={})
+ was_suppressed = conditions[:was_suppressed] || false
+ will_suppress = conditions[:will_suppress] || false
+
+ template_file = File.join(File.dirname(__FILE__),"templates","sms.txt.erb")
+
+ txt = if File.exists?(template_file)
+ ERB.new(File.read(template_file)).result(binding).chomp
+ else
+ logger.error("Could not find sms.txt.erb template")
+ alert.to_s
+ end
+ end
+
+ def normalize_number(n)
+ n.split("").select { |s| (?0..?9).include?(s[0]) }.join.gsub(/^0/, "44")
+ end
+ end
+ end
+ end
+end
+
diff --git a/lib/mauve/notifiers/templates/email_subject.txt.erb b/lib/mauve/notifiers/templates/email_subject.txt.erb
index 119c742..802c711 100644..120000
--- a/lib/mauve/notifiers/templates/email_subject.txt.erb
+++ b/lib/mauve/notifiers/templates/email_subject.txt.erb
@@ -1,22 +1 @@
-<%=alert.id %>: <%= alert.update_type.upcase %>: <%
-case alert.update_type
-when "cleared"
-%><%= alert.cleared_at.to_s_relative %><%
-when "acknowledged"
-%><%= alert.acknowledged_at.to_s_relative %> by <%= alert.acknowledged_by %> until <%= alert.will_unacknowledge_at.to_s_human %><%
-else
-%><%= alert.raised_at.to_s_relative %><%
-end
-%>: <%= alert.subject %>: <%= alert.summary %><%
-if alert.source != alert.subject
-%> -- from <%= alert.source %><%
-end
-%>. <%=WebInterface.url_for(alert)%><%
-if defined? was_suppressed and defined? will_suppress
- if was_suppressed and not will_suppress
-%> (Normal service has resumed.)<%
- elsif will_suppress and not was_suppressed
-%> (Further alerts suppressed until things calm down.)<%
- end
-end
-%>
+xmpp.txt.erb \ No newline at end of file
diff --git a/lib/mauve/notifiers/templates/sms.txt.erb b/lib/mauve/notifiers/templates/sms.txt.erb
index faec37d..802c711 100644..120000
--- a/lib/mauve/notifiers/templates/sms.txt.erb
+++ b/lib/mauve/notifiers/templates/sms.txt.erb
@@ -1,22 +1 @@
-<%= alert.update_type.upcase %>: <%
-case alert.update_type
-when "cleared"
-%><%= alert.cleared_at.to_s_relative %><%
-when "acknowledged"
-%><%= alert.acknowledged_at.to_s_relative %> by <%= alert.acknowledged_by %> until <%= alert.will_unacknowledge_at.to_s_human %><%
-else
-%><%= alert.raised_at.to_s_relative %><%
-end
-%>: <%= alert.subject %>: <%= alert.summary %><%
-if alert.source != alert.subject
-%> -- from <%= alert.source %><%
-end
-%>. <%=WebInterface.url_for(alert)%><%
-if defined? was_suppressed and defined? will_suppress
- if was_suppressed and not will_suppress
-%> (Normal service has resumed.)<%
- elsif will_suppress and not was_suppressed
-%> (Further alerts suppressed until things calm down.)<%
- end
-end
-%>
+xmpp.txt.erb \ No newline at end of file
diff --git a/lib/mauve/notifiers/templates/xmpp.html.erb b/lib/mauve/notifiers/templates/xmpp.html.erb
index 12354a2..7792bd9 100644
--- a/lib/mauve/notifiers/templates/xmpp.html.erb
+++ b/lib/mauve/notifiers/templates/xmpp.html.erb
@@ -1,5 +1,5 @@
<html xmlns="http://jabber.org/protocol/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml">
-<a href="<%=WebInterface.url_for(alert)%>"><%= alert.id%>: <%= alert.update_type.upcase %></a>: <%
+<a href="<%=WebInterface.url_for(alert)%>"><%= alert.id%>: <%= alert.update_type.upcase %></a> (<%= alert.level %>): <%
case alert.update_type
when "cleared"
%><%= alert.cleared_at.to_s_relative %><%
@@ -15,9 +15,9 @@ end
%>.<%
if defined? was_suppressed and defined? will_suppress
if was_suppressed and not will_suppress
-%><br /><em>Normal service has resumed.</em><%
+%><br /><em>Normal service for <%= alert.level %> alerts has resumed.</em><%
elsif will_suppress and not was_suppressed
-%><br /><em>Further alerts suppressed until things calm down.</em><%
+%><br /><em>Further <%= alert.level %> alerts suppressed until things calm down.</em><%
end
end
%></body></html>
diff --git a/lib/mauve/notifiers/templates/xmpp.txt.erb b/lib/mauve/notifiers/templates/xmpp.txt.erb
index f63c96c..c148f41 100644
--- a/lib/mauve/notifiers/templates/xmpp.txt.erb
+++ b/lib/mauve/notifiers/templates/xmpp.txt.erb
@@ -1,4 +1,4 @@
-<%=alert.id %>: <%= alert.update_type.upcase %>: <%
+<%=alert.id %>: <%= alert.update_type.upcase %> (<%= alert.level %>): <%
case alert.update_type
when "cleared"
%><%= alert.cleared_at.to_s_relative %><%
@@ -14,9 +14,9 @@ end
%>. <%=WebInterface.url_for(alert)%><%
if defined? was_suppressed and defined? will_suppress
if was_suppressed and not will_suppress
-%> (Normal service has resumed.)<%
+%> (Normal service for <%= alert.level %> alerts has resumed.)<%
elsif will_suppress and not was_suppressed
-%> (Further alerts suppressed until things calm down.)<%
+%> (Further <%= alert.level %> alerts suppressed until things calm down.)<%
end
end
%>