pixeltrix-prowler 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -0
- data/VERSION +1 -1
- data/lib/prowler.rb +40 -11
- data/prowler.gemspec +2 -2
- data/test/prowler_test.rb +0 -7
- metadata +2 -2
data/CHANGELOG
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.3
|
data/lib/prowler.rb
CHANGED
@@ -44,6 +44,11 @@ require 'net/https'
|
|
44
44
|
|
45
45
|
module Prowler
|
46
46
|
|
47
|
+
API_PATH = "/publicapi/add"
|
48
|
+
DEPRECATED_API_PATH = "/api/add_notification.php?application=%s&event=%s&description=%s"
|
49
|
+
VERIFY_PATH = "/publicapi/verify?apikey=%s"
|
50
|
+
USER_AGENT = "Prowler/1.0.3"
|
51
|
+
|
47
52
|
module Priority
|
48
53
|
VERY_LOW = -2
|
49
54
|
MODERATE = -1
|
@@ -98,14 +103,6 @@ module Prowler
|
|
98
103
|
!@application.nil? && (!@api_key.nil? || !(@username.nil? || @password.nil?))
|
99
104
|
end
|
100
105
|
|
101
|
-
def path(*params) #:nodoc:
|
102
|
-
sprintf("/publicapi/add?apikey=%s&priority=%d&application=%s&event=%s&description=%s", *params)
|
103
|
-
end
|
104
|
-
|
105
|
-
def deprecated_path(*params) #:nodoc:
|
106
|
-
sprintf("/api/add_notification.php?application=%s&event=%s&description=%s", *params)
|
107
|
-
end
|
108
|
-
|
109
106
|
# Returns the default logger or a logger that prints to STDOUT.
|
110
107
|
def logger
|
111
108
|
ActiveRecord::Base.logger
|
@@ -125,14 +122,15 @@ module Prowler
|
|
125
122
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
126
123
|
http.start do
|
127
124
|
headers = {
|
128
|
-
'User-Agent' =>
|
125
|
+
'User-Agent' => USER_AGENT
|
129
126
|
}
|
130
127
|
http.read_timeout = 5 # seconds
|
131
128
|
http.open_timeout = 2 # seconds
|
132
129
|
if api_key
|
133
|
-
request = Net::HTTP::
|
130
|
+
request = Net::HTTP::Post.new(API_PATH, headers)
|
131
|
+
request.set_form_data({ 'apikey' => api_key, 'priority' => priority, 'application' => application, 'event' => event, 'description' => message })
|
134
132
|
else
|
135
|
-
request = Net::HTTP::Get.new(
|
133
|
+
request = Net::HTTP::Get.new(sprintf(DEPRECATED_API_PATH, URI.escape(application), URI.escape(event), URI.escape(message)), headers)
|
136
134
|
request.basic_auth(username, password)
|
137
135
|
end
|
138
136
|
response = begin
|
@@ -151,5 +149,36 @@ module Prowler
|
|
151
149
|
end
|
152
150
|
end
|
153
151
|
end
|
152
|
+
|
153
|
+
# Verify the configured API key is valid
|
154
|
+
def verify
|
155
|
+
raise RuntimeError, "Prowler needs to be configured first before using it" unless api_key
|
156
|
+
|
157
|
+
http = Net::HTTP.new(host, port)
|
158
|
+
http.use_ssl = secure
|
159
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
160
|
+
http.start do
|
161
|
+
headers = {
|
162
|
+
'User-Agent' => USER_AGENT
|
163
|
+
}
|
164
|
+
http.read_timeout = 5 # seconds
|
165
|
+
http.open_timeout = 2 # seconds
|
166
|
+
request = Net::HTTP::Get.new(sprintf(VERIFY_PATH, api_key), headers)
|
167
|
+
response = begin
|
168
|
+
http.request(request) if send_notifications?
|
169
|
+
rescue TimeoutError => e
|
170
|
+
logger.error "Timeout while contacting the Prowl server."
|
171
|
+
nil
|
172
|
+
end
|
173
|
+
case response
|
174
|
+
when Net::HTTPSuccess then
|
175
|
+
logger.info "Prowl Success: #{response.class}"
|
176
|
+
true
|
177
|
+
else
|
178
|
+
logger.error "Prowl Failure: #{response.class}\n#{response.body if response.respond_to? :body}"
|
179
|
+
false
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
154
183
|
end
|
155
184
|
end
|
data/prowler.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{prowler}
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Andrew White"]
|
9
|
-
s.date = %q{2009-07-
|
9
|
+
s.date = %q{2009-07-09}
|
10
10
|
s.description = %q{A simple wrapper class that provides basic access to the Prowl API.}
|
11
11
|
s.email = %q{andyw@pixeltrix.co.uk}
|
12
12
|
s.extra_rdoc_files = [
|
data/test/prowler_test.rb
CHANGED
@@ -105,13 +105,6 @@ class ProwlerTest < Test::Unit::TestCase
|
|
105
105
|
Prowler.send_notifications = false
|
106
106
|
end
|
107
107
|
|
108
|
-
should "encode the url parameters" do
|
109
|
-
expectation = Prowler.expects(:path)
|
110
|
-
expectation.with("apikey", 0, "Application%20Name", "Event%20Name", "Message%20Text")
|
111
|
-
expectation.returns("/publicapi/add?apikey=apikey&priority=0application=Application%20Name&event=Event%20Name&description=Message%20Text")
|
112
|
-
Prowler.notify("Event Name", "Message Text", Prowler::Priority::NORMAL)
|
113
|
-
end
|
114
|
-
|
115
108
|
should "not verify SSL certificates" do
|
116
109
|
Net::HTTP.any_instance.expects(:use_ssl=).with(true)
|
117
110
|
Net::HTTP.any_instance.expects(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pixeltrix-prowler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew White
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-09 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|