send_nsca 0.5.0 → 0.6.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 +4 -4
- data/Rakefile +13 -13
- data/lib/send_nsca/send_nsca.rb +41 -15
- metadata +40 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f05428eb0570a98321e631347f93ee1927f545a4
|
4
|
+
data.tar.gz: 3bba7c1bf1f80e23f37805a348a2f20afcc5979f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7214d9f2457918600222aed23ab84c5dd0fa6aba729a86eedf9a8ed2d5c8b86c8335891a3d1d2bd8896e3864c516aab5c53b173b19607eabd3964a5278660006
|
7
|
+
data.tar.gz: 783bed9d44a430ad0359b541b35cf583fe13346804252827b81339177dbdd6178185ccf504069217396c83041ea1036b4048ad45295d2dc818e15b47866b27e3
|
data/Rakefile
CHANGED
@@ -4,21 +4,21 @@ require 'rake'
|
|
4
4
|
begin
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name =
|
8
|
-
gem.summary =
|
9
|
-
gem.description =
|
10
|
-
gem.email =
|
11
|
-
gem.homepage =
|
12
|
-
gem.authors = [
|
13
|
-
gem.
|
14
|
-
gem.
|
15
|
-
gem.
|
16
|
-
gem.
|
17
|
-
# gem is a Gem::Specification... see http://
|
7
|
+
gem.name = 'send_nsca'
|
8
|
+
gem.summary = 'A ruby gem for sending passive alerts to Nagios through NSCA.'
|
9
|
+
gem.description = 'A pure ruby implementation of the send_nsca program for sending passive alerts to Nagios through NSCA.'
|
10
|
+
gem.email = 'kbedell@gmail.com'
|
11
|
+
gem.homepage = 'http://github.com/kevinzen/send_nsca'
|
12
|
+
gem.authors = ['kevinzen', 'kyrremann']
|
13
|
+
gem.require_path = 'lib'
|
14
|
+
gem.files = %w(History.txt install.rb MIT-LICENSE.txt README.rdoc Rakefile) + Dir['lib/**/*'] + Dir['spec/**/*']
|
15
|
+
gem.test_files = Dir['spec/**/*']
|
16
|
+
gem.licenses = ['MIT']
|
17
|
+
# gem is a Gem::Specification... see http://docs.seattlerb.org/rubygems/Gem/Specification.html for additional settings
|
18
18
|
end
|
19
19
|
Jeweler::GemcutterTasks.new
|
20
20
|
rescue LoadError
|
21
|
-
puts
|
21
|
+
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
22
22
|
end
|
23
23
|
|
24
24
|
|
@@ -26,7 +26,7 @@ require 'rspec/core/rake_task'
|
|
26
26
|
|
27
27
|
task :default => [:spec]
|
28
28
|
|
29
|
-
desc
|
29
|
+
desc 'Run the specs.'
|
30
30
|
RSpec::Core::RakeTask.new do |spec|
|
31
31
|
spec.pattern = 'spec/**/*_spec.rb'
|
32
32
|
end
|
data/lib/send_nsca/send_nsca.rb
CHANGED
@@ -4,18 +4,22 @@ module SendNsca
|
|
4
4
|
STATUS_WARNING = 1
|
5
5
|
STATUS_CRITICAL = 2
|
6
6
|
|
7
|
+
NONE = 0
|
8
|
+
XOR = 1
|
9
|
+
|
7
10
|
class NscaConnection
|
8
11
|
|
9
12
|
require 'socket' # Sockets are in standard library
|
10
13
|
|
11
14
|
# todo: replace timeout with a better method of handling communication timeouts.
|
12
15
|
require 'timeout'
|
16
|
+
attr_accessor :nscatimeout
|
13
17
|
|
14
18
|
# params for connecting to the nsca/nagios server
|
15
19
|
attr_accessor :nscahost
|
16
20
|
attr_accessor :port
|
17
21
|
|
18
|
-
#
|
22
|
+
# connection status and error if one found
|
19
23
|
attr_reader :connected
|
20
24
|
attr_reader :error
|
21
25
|
|
@@ -30,6 +34,9 @@ module SendNsca
|
|
30
34
|
attr_accessor :timestamp_hex
|
31
35
|
attr_accessor :timestamp
|
32
36
|
|
37
|
+
# encryption_mode
|
38
|
+
attr_accessor :encryption_mode
|
39
|
+
|
33
40
|
# status data to send to nagios
|
34
41
|
# Currently all 4 are required, meaning we only support 'service' passive checkins.
|
35
42
|
# todo: add host checkins
|
@@ -38,6 +45,9 @@ module SendNsca
|
|
38
45
|
attr_accessor :return_code
|
39
46
|
attr_accessor :status
|
40
47
|
|
48
|
+
# debug
|
49
|
+
attr_accessor :debug
|
50
|
+
|
41
51
|
# for sending to nsca
|
42
52
|
attr_accessor :crc
|
43
53
|
PACKET_VERSION = 3
|
@@ -46,7 +56,6 @@ module SendNsca
|
|
46
56
|
CRC_TABLE = [ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d]
|
47
57
|
|
48
58
|
def initialize(args)
|
49
|
-
|
50
59
|
# connecting to nagios
|
51
60
|
@nscahost = args[:nscahost]
|
52
61
|
@port = args[:port]
|
@@ -56,12 +65,14 @@ module SendNsca
|
|
56
65
|
@status = args[:status]
|
57
66
|
@connected = false
|
58
67
|
@password = args[:password] || ''
|
59
|
-
|
68
|
+
@timeout = args[:nscatimeout] || 1
|
69
|
+
@encryption_mode = args[:encryption_mode] || SendNsca::XOR
|
70
|
+
@debug = args[:debug] || false
|
60
71
|
end
|
61
72
|
|
62
73
|
def connect_and_get_keys
|
63
74
|
begin
|
64
|
-
timeout(
|
75
|
+
timeout(@timeout) do # the server has @timeout second(s) to answer
|
65
76
|
@tcp_client = TCPSocket.open(@nscahost, @port)
|
66
77
|
@connected = true
|
67
78
|
@xor_key_and_timestamp = @tcp_client.recv(132)
|
@@ -69,8 +80,8 @@ module SendNsca
|
|
69
80
|
rescue
|
70
81
|
@connected = false
|
71
82
|
@error = "send_ncsa - error connecting to nsca/nagios: #{$!}"
|
72
|
-
puts
|
73
|
-
@tcp_client.try(:close)
|
83
|
+
puts @error
|
84
|
+
@tcp_client.try(:close) unless @tcp_client.nil?
|
74
85
|
raise # re-raise same exception
|
75
86
|
end
|
76
87
|
timestamp_for_logging
|
@@ -109,16 +120,31 @@ module SendNsca
|
|
109
120
|
@crc = SendNsca::NscaConnection.crc32(string_to_send_without_crc)
|
110
121
|
nsca_params = [PACKET_VERSION, @crc, @timestring, @return_code, @hostname, @service, @status ]
|
111
122
|
string_to_send_with_crc = nsca_params.pack(PACK_STRING)
|
112
|
-
|
113
|
-
#puts("DEBUG: PACKET_VERSION = #{PACKET_VERSION},\n @crc = #{@crc},\n @timestring = #{@timestring},\n @timestamp_hex = #{Time.at(timestamp_hex)},\n @return_code #{@return_code},\n @hostname = #{@hostname},\n @service = #{@service},\n @status = #{@status}\n")
|
114
|
-
#puts "string_to_send_with_crc = #{string_to_send_with_crc.length}"
|
115
|
-
#puts "string_to_send_with_crc = #{string_to_send_with_crc.unpack('H*')}"
|
116
|
-
|
117
|
-
encrypted_string_to_send = SendNsca::NscaConnection.xor(@xor_key, string_to_send_with_crc, @password)
|
118
|
-
#puts "encrypted_string_to_send = #{encrypted_string_to_send.length}"
|
119
|
-
#puts "encrypted_string_to_send = #{encrypted_string_to_send.unpack('H*')}"
|
120
123
|
|
121
|
-
@
|
124
|
+
if @debug
|
125
|
+
puts %{DEBUG: PACKET_VERSION = #{PACKET_VERSION}
|
126
|
+
@crc = #{@crc}
|
127
|
+
@timestring = #{@timestring}
|
128
|
+
@timestamp_hex = #{Time.at(timestamp_hex)}
|
129
|
+
@return_code #{@return_code}
|
130
|
+
@hostname = #{@hostname}
|
131
|
+
@service = #{@service}
|
132
|
+
@status = #{@status}}
|
133
|
+
puts "string_to_send_with_crc = #{string_to_send_with_crc.length}"
|
134
|
+
puts "string_to_send_with_crc = #{string_to_send_with_crc.unpack('H*')}"
|
135
|
+
end
|
136
|
+
|
137
|
+
if @encryption_mode == SendNsca::NONE
|
138
|
+
string_to_send = string_to_send_with_crc
|
139
|
+
else
|
140
|
+
string_to_send = SendNsca::NscaConnection.xor(@xor_key, string_to_send_with_crc, @password)
|
141
|
+
if @debug
|
142
|
+
puts "encrypted_string_to_send = #{string_to_send.length}"
|
143
|
+
puts "encrypted_string_to_send = #{string_to_send.unpack('H*')}"
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
@tcp_client.send(string_to_send, 0)
|
122
148
|
@tcp_client.close
|
123
149
|
end
|
124
150
|
|
metadata
CHANGED
@@ -1,29 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: send_nsca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kevinzen
|
8
|
+
- kyrremann
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2015-05-18 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jeweler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: send_nsca
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
13
42
|
- !ruby/object:Gem::Dependency
|
14
43
|
name: rspec
|
15
44
|
requirement: !ruby/object:Gem::Requirement
|
16
45
|
requirements:
|
17
46
|
- - ">="
|
18
47
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
48
|
+
version: 1.2.9
|
20
49
|
type: :development
|
21
50
|
prerelease: false
|
22
51
|
version_requirements: !ruby/object:Gem::Requirement
|
23
52
|
requirements:
|
24
53
|
- - ">="
|
25
54
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
55
|
+
version: 1.2.9
|
27
56
|
description: A pure ruby implementation of the send_nsca program for sending passive
|
28
57
|
alerts to Nagios through NSCA.
|
29
58
|
email: kbedell@gmail.com
|
@@ -41,11 +70,11 @@ files:
|
|
41
70
|
- spec/spec.opts
|
42
71
|
- spec/spec_helper.rb
|
43
72
|
homepage: http://github.com/kevinzen/send_nsca
|
44
|
-
licenses:
|
73
|
+
licenses:
|
74
|
+
- MIT
|
45
75
|
metadata: {}
|
46
76
|
post_install_message:
|
47
|
-
rdoc_options:
|
48
|
-
- "--charset=UTF-8"
|
77
|
+
rdoc_options: []
|
49
78
|
require_paths:
|
50
79
|
- lib
|
51
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -60,12 +89,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
89
|
version: '0'
|
61
90
|
requirements: []
|
62
91
|
rubyforge_project:
|
63
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.4.5
|
64
93
|
signing_key:
|
65
|
-
specification_version:
|
66
|
-
summary: A
|
67
|
-
to Nagios through NSCA.
|
94
|
+
specification_version: 4
|
95
|
+
summary: A ruby gem for sending passive alerts to Nagios through NSCA.
|
68
96
|
test_files:
|
69
97
|
- spec/send_nsca_spec.rb
|
70
|
-
- spec/spec.opts
|
71
98
|
- spec/spec_helper.rb
|
99
|
+
- spec/spec.opts
|