logstash-output-pushover 0.1.0
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 +7 -0
- data/.gitignore +35 -0
- data/Gemfile +2 -0
- data/LICENSE +13 -0
- data/README.md +40 -0
- data/Rakefile +1 -0
- data/lib/logstash/outputs/pushover.rb +88 -0
- data/logstash-output-pushover.gemspec +23 -0
- data/spec/outputs/pushover_spec.rb +21 -0
- metadata +88 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 27c6825e2be3281fab3feb973a6dc52a6decea27
|
4
|
+
data.tar.gz: 293a469d588327d90389f54eb6606ba889044c52
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: efa880e4ab9a8f5cb9b153bd7c64548bb2a509b05390b9b1271a079964d1f345c86d13cf8663c13ce3e111d1806c1bf69db8ff4d83c5ef2129476586f66957ed
|
7
|
+
data.tar.gz: 43045d4ac6614fb842b85fcab91d2e177970ef1019331e5064f1726bc9e1700f61c1063d1d7af217d34c6a32a49fbef14afd9aae4745dc982a2719ed1b71c939
|
data/.gitignore
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/test/tmp/
|
9
|
+
/test/version_tmp/
|
10
|
+
/tmp/
|
11
|
+
|
12
|
+
## Specific to RubyMotion:
|
13
|
+
.dat*
|
14
|
+
.repl_history
|
15
|
+
build/
|
16
|
+
|
17
|
+
## Documentation cache and generated files:
|
18
|
+
/.yardoc/
|
19
|
+
/_yardoc/
|
20
|
+
/doc/
|
21
|
+
/rdoc/
|
22
|
+
|
23
|
+
## Environment normalisation:
|
24
|
+
/.bundle/
|
25
|
+
/vendor/bundle
|
26
|
+
/lib/bundler/man/
|
27
|
+
|
28
|
+
# for a library or gem, you might want to ignore these files since the code is
|
29
|
+
# intended to run in multiple environments; otherwise, check them in:
|
30
|
+
# Gemfile.lock
|
31
|
+
# .ruby-version
|
32
|
+
# .ruby-gemset
|
33
|
+
|
34
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
35
|
+
.rvmrc
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2015 Jasper Lievisse Adriaanse <j@jasper.la>
|
2
|
+
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
purpose with or without fee is hereby granted, provided that the above
|
5
|
+
copyright notice and this permission notice appear in all copies.
|
6
|
+
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
10
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
12
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
13
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
Logstash Plugin for Pushover output
|
2
|
+
===
|
3
|
+
|
4
|
+
This is a plugin for [logstash](https://www.elastic.co/products/logstash) to send events to [Pushover](https://pushover.net). It's not an official Pushover-service.
|
5
|
+
|
6
|
+
Usage
|
7
|
+
---
|
8
|
+
|
9
|
+
There are two required parameters that need to be set, so at the very least the
|
10
|
+
following is required:
|
11
|
+
|
12
|
+
output {
|
13
|
+
pushover {
|
14
|
+
app_token => "YOUR_UNIQUE_APP_TOKEN"
|
15
|
+
user_key => "RECEIVERS_UNIQUE_USER_KEY"
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
No futher configuration parameters that are listed on [the API specification](https://pushover.net/api)
|
20
|
+
are currently enabled.
|
21
|
+
|
22
|
+
ToDo
|
23
|
+
---
|
24
|
+
|
25
|
+
- Wire-up additional configuration parameters
|
26
|
+
- tests :)
|
27
|
+
|
28
|
+
Copyright
|
29
|
+
---
|
30
|
+
|
31
|
+
- 2015 Jasper Lievisse Adriaanse <j@jasper.la>
|
32
|
+
|
33
|
+
Contributing
|
34
|
+
---
|
35
|
+
|
36
|
+
1. Fork it
|
37
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
38
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
39
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
40
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "logstash/devutils/rake"
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "logstash/outputs/base"
|
3
|
+
require "logstash/namespace"
|
4
|
+
|
5
|
+
# Event notification through Pushover.
|
6
|
+
# Currently only supports plain messages (event) and no further configuration
|
7
|
+
# options are submitted.
|
8
|
+
class LogStash::Outputs::Pushover < LogStash::Outputs::Base
|
9
|
+
config_name "pushover"
|
10
|
+
|
11
|
+
# Application token, obtain by registring a new application
|
12
|
+
config :app_token, :validate => :string, :require => true
|
13
|
+
|
14
|
+
# Key for the receiving user
|
15
|
+
config :user_key, :validate => :string, :require => true
|
16
|
+
|
17
|
+
# User device name: https://pushover.net/api#identifiers
|
18
|
+
config :device, :validate => :string
|
19
|
+
|
20
|
+
# Message title: https://pushover.net/api#messages
|
21
|
+
config :title, :validate => :string, :default => "Logstash"
|
22
|
+
|
23
|
+
# Message priority: https://pushover.net/api#priority
|
24
|
+
config :priority, :validate => [-2,-1,0,1,2], :default => 0
|
25
|
+
|
26
|
+
# Timestamp for the message: https://pushover.net/api#timestamp
|
27
|
+
config :timestamp, :validate => :string
|
28
|
+
|
29
|
+
# Notification sound: https://pushover.net/api#sounds
|
30
|
+
config :sound, :validate => :string
|
31
|
+
|
32
|
+
# Supplementary URLs: https://pushover.net/api#urls
|
33
|
+
config :url, :validate => :string # XXX: something://rest
|
34
|
+
|
35
|
+
# Supplementary URL title: https://pushover.net/api#urls
|
36
|
+
config :url_title, :validate => :string
|
37
|
+
|
38
|
+
# Wether to append "tags: <list of tags>" to the event
|
39
|
+
config :add_tags, :validate => :boolean, :default => :false
|
40
|
+
|
41
|
+
# URL of the Pushover API; should generally not be adjusted but it's
|
42
|
+
# configurable for testing or in case the something changes upstream and
|
43
|
+
# this plugin isn't updated quick enough.
|
44
|
+
config :api_url, :validate => :string, :default => 'https://api.pushover.net/1/messages.json'
|
45
|
+
|
46
|
+
public
|
47
|
+
def register
|
48
|
+
require 'net/https'
|
49
|
+
require 'uri'
|
50
|
+
@api_uri = URI.parse(@api_url)
|
51
|
+
@client = Net::HTTP.new(@api_uri.host, @api_uri.port)
|
52
|
+
end # def register
|
53
|
+
|
54
|
+
public
|
55
|
+
def receive(event)
|
56
|
+
return unless output?(event)
|
57
|
+
|
58
|
+
@logger.info("Pushover event", :event => event)
|
59
|
+
|
60
|
+
# If requested, add any logstash tags to the message
|
61
|
+
message = event.to_s
|
62
|
+
if @add_tags
|
63
|
+
message += " tags: " + @tags.join(',') if @tags
|
64
|
+
end
|
65
|
+
|
66
|
+
begin
|
67
|
+
request = Net::HTTP::Post.new(@api_uri.path)
|
68
|
+
request.set_form_data({
|
69
|
+
:token => @app_token,
|
70
|
+
:user => @user_key,
|
71
|
+
:message => event
|
72
|
+
})
|
73
|
+
# XXX: For any additional configuration keys, add them to the request.
|
74
|
+
response = @client
|
75
|
+
response.use_ssl = true
|
76
|
+
response.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
77
|
+
response.start do |http|
|
78
|
+
r = http.request(request)
|
79
|
+
if status = r.body.match(/"status":(\d+)/)[1] != 1
|
80
|
+
@logger.warn("API error", :status => status)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
rescue Exception => e
|
84
|
+
@logger.warn("Failed to push notification", :event => event, :exception => e,
|
85
|
+
:backtrace => e.backtrace)
|
86
|
+
end
|
87
|
+
end # def event
|
88
|
+
end # class LogStash::Outputs::Pushover
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'logstash-output-pushover'
|
3
|
+
s.version = "0.1.0"
|
4
|
+
s.licenses = ["ISC"]
|
5
|
+
s.summary = "Logstash output to Pushover."
|
6
|
+
s.description = "This is a Logstash output for the Pushover push notification service."
|
7
|
+
s.authors = ["Jasper Lievisse Adriaanse"]
|
8
|
+
s.email = "j@jasper.la"
|
9
|
+
s.homepage = "https://github.com/jasperla/logstash-output-pushover"
|
10
|
+
s.require_paths = ["lib"]
|
11
|
+
|
12
|
+
# Files
|
13
|
+
s.files = `git ls-files`.split($\)
|
14
|
+
# Tests
|
15
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
16
|
+
|
17
|
+
# Special flag to let us know this is actually a logstash plugin
|
18
|
+
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "output" }
|
19
|
+
|
20
|
+
# Gem dependencies
|
21
|
+
s.add_runtime_dependency "logstash-core", ">= 1.4.0", "< 2.0.0"
|
22
|
+
s.add_development_dependency "logstash-devutils"
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "logstash/devutils/rspec/spec_helper"
|
2
|
+
require "logstash/outputs/example"
|
3
|
+
require "logstash/codecs/plain"
|
4
|
+
require "logstash/event"
|
5
|
+
|
6
|
+
describe LogStash::Outputs::Example do
|
7
|
+
let(:sample_event) { LogStash::Event.new }
|
8
|
+
let(:output) { LogStash::Outputs::Example.new }
|
9
|
+
|
10
|
+
before do
|
11
|
+
output.register
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "receive message" do
|
15
|
+
subject { output.receive(sample_event) }
|
16
|
+
|
17
|
+
it "returns a string" do
|
18
|
+
expect(subject).to eq("Event received")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: logstash-output-pushover
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jasper Lievisse Adriaanse
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: logstash-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.4.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.0.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.4.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: logstash-devutils
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
description: This is a Logstash output for the Pushover push notification service.
|
48
|
+
email: j@jasper.la
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- ".gitignore"
|
54
|
+
- Gemfile
|
55
|
+
- LICENSE
|
56
|
+
- README.md
|
57
|
+
- Rakefile
|
58
|
+
- lib/logstash/outputs/pushover.rb
|
59
|
+
- logstash-output-pushover.gemspec
|
60
|
+
- spec/outputs/pushover_spec.rb
|
61
|
+
homepage: https://github.com/jasperla/logstash-output-pushover
|
62
|
+
licenses:
|
63
|
+
- ISC
|
64
|
+
metadata:
|
65
|
+
logstash_plugin: 'true'
|
66
|
+
logstash_group: output
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options: []
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
requirements: []
|
82
|
+
rubyforge_project:
|
83
|
+
rubygems_version: 2.2.3
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: Logstash output to Pushover.
|
87
|
+
test_files:
|
88
|
+
- spec/outputs/pushover_spec.rb
|