send_nsca 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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