module Nagios::Gearman::Downtime
Constants
- VERSION
Public Class Methods
aes256_encrypt(key, data)
click to toggle source
# File lib/nagios-gearman-downtime.rb, line 75 def self.aes256_encrypt(key, data) key = null_padding(key) aes = OpenSSL::Cipher.new('AES-256-ECB') aes.encrypt aes.key = key aes.update(data) + aes.final end
build_payload(args)
click to toggle source
# File lib/nagios-gearman-downtime.rb, line 38 def self.build_payload(args) object_info = create_object_type(args.delete(:object_type), args.delete(:object_name)) if object_info.match(/enable|disable/i) common_args = '' else common_args = ";#{args.delete(:start_time)};#{args.delete(:end_time)};#{args.delete(:fixed)};#{args.delete(:trigger_id)};#{args.delete(:duration)};#{args.delete(:author)};#{args.delete(:comment)}" end payload = "[#{Time.now.to_i}] #{object_info}#{common_args}" logger.info "payload before encryption: #{payload}" if args.delete(:encryption) begin payload = aes256_encrypt(args.delete(:key), payload) rescue Exception => e logger.error "unable to encrypt payload: #{e}" end end payload end
create_object_type(obj, obj_name)
click to toggle source
# File lib/nagios-gearman-downtime.rb, line 14 def self.create_object_type(obj, obj_name) case obj when 'host' object_info = "SCHEDULE_HOST_SVC_DOWNTIME;#{obj_name}" when 'hostgroup_host' object_info = "SCHEDULE_HOSTGROUP_HOST_DOWNTIME;#{obj_name}" when 'hostgroup_svc' object_info = "SCHEDULE_HOSTGROUP_SVC_DOWNTIME;#{obj_name}" when 'servicegroup_host' object_info = "SCHEDULE_SERVICEGROUP_HOST_DOWNTIME;#{obj_name}" when 'servicegroup_svc' object_info = "SCHEDULE_SERVICEGROUP_SVC_DOWNTIME;#{obj_name}" when 'service' object_info = "SCHEDULE_HOSTGROUP_HOST_DOWNTIME;#{obj_name}" when 'enable_servicegroup' object_info = "ENABLE_SERVICEGROUP_SVC_NOTIFICATIONS;#{obj_name}" when 'disable_servicegroup' object_info = "DISABLE_SERVICEGROUP_SVC_NOTIFICATIONS;#{obj_name}" end logger.info "object_info: #{object_info}" object_info end
logger()
click to toggle source
# File lib/nagios-gearman-downtime.rb, line 7 def self.logger @@logger = Logger.new(STDOUT) @@logger.level = Logger::DEBUG @@logger end
null_padding(key)
click to toggle source
# File lib/nagios-gearman-downtime.rb, line 83 def self.null_padding(key) padding = (32 - key.bytesize) if(key.kind_of?(String) && 32 != key.bytesize) key += "\0" * padding end
send_external_cmd(options)
click to toggle source
# File lib/nagios-gearman-downtime.rb, line 60 def self.send_external_cmd(options) logger.info "send_external_cmd options: #{options}" client = ::Gearman::Client.new(options[:gearman_job_server]) taskset = ::Gearman::TaskSet.new(client) encoded_job = Base64.encode64(options[:job]) task = ::Gearman::Task.new(options[:queue], encoded_job) begin logger.info "[client] Sending task: #{task.inspect}" result = taskset.add_task(task) logger.info "result: #{result}" rescue Exception => e logger.error "Send external command failed: #{e}" end end