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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +13 -13
  3. data/lib/send_nsca/send_nsca.rb +41 -15
  4. metadata +40 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b01bc3a9cda13bfd1d0b620be61efb099687da3
4
- data.tar.gz: 7b164273cfee1de17fbd6cd4b5827ec10c9c8e76
3
+ metadata.gz: f05428eb0570a98321e631347f93ee1927f545a4
4
+ data.tar.gz: 3bba7c1bf1f80e23f37805a348a2f20afcc5979f
5
5
  SHA512:
6
- metadata.gz: 9042f6005188dc538788d8046295b3fa6e848138170810de8f6d269a923019e9bdc9bea53f4c019df0c1e90bbb60c271e3ba3c41d94a2a9dcb81009e19d5e256
7
- data.tar.gz: 6f0ee855e4cbecd369250ac61a117104e19654ac15fc07aeb5918179dde561cde8ae627af0544af0841b698e6aa74926131ada274c401a65a67ff3b3df5d4553
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 = "send_nsca"
8
- gem.summary = %Q{A pure ruby implementation of the send_nsca program for sending passive alerts to Nagios through NSCA.}
9
- gem.description = %Q{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"]
13
- gem.add_development_dependency "rspec", ">= 1.2.9"
14
- gem.require_path = "lib"
15
- gem.files = %w(History.txt install.rb MIT-LICENSE.txt README.rdoc Rakefile) + Dir["lib/**/*"] + Dir["spec/**/*"]
16
- gem.test_files = Dir["spec/**/*"]
17
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
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 "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
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 "Run the specs."
29
+ desc 'Run the specs.'
30
30
  RSpec::Core::RakeTask.new do |spec|
31
31
  spec.pattern = 'spec/**/*_spec.rb'
32
32
  end
@@ -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
- # connection status and error if one found
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(1) do #the server has one second to answer
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 @error
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
- @tcp_client.send(encrypted_string_to_send, 0)
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.5.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: 2014-07-26 00:00:00.000000000 Z
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: '2'
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: '2'
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.2.2
92
+ rubygems_version: 2.4.5
64
93
  signing_key:
65
- specification_version: 3
66
- summary: A pure ruby implementation of the send_nsca program for sending passive alerts
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