class Proxy::Monitoring::Icinga2::Icinga2Client
Public Class Methods
baseurl()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 123 def baseurl "https://#{Proxy::Monitoring::Icinga2::Plugin.settings.server}:#{Proxy::Monitoring::Icinga2::Plugin.settings.api_port}/v1" end
cacert()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 103 def cacert Proxy::Monitoring::Icinga2::Plugin.settings.api_cacert end
cert()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 89 def cert file = Proxy::Monitoring::Icinga2::Plugin.settings.api_usercert return unless !file.nil? && File.file?(file) OpenSSL::X509::Certificate.new(File.read(file)) end
certificate_request?()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 119 def certificate_request? cert && key end
client(request_url)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 10 def client(request_url) headers = { 'Accept' => 'application/json', } options = { headers: headers, user: user, ssl_ca_file: cacert, verify_ssl: ssl, } auth_options = if certificate_request? { ssl_client_cert: cert, ssl_client_key: key, } else { password: password, } end options.merge!(auth_options) RestClient::Resource.new( [baseurl, request_url].join, options ) end
delete(url)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 85 def delete(url) client(url).delete end
events_socket(endpoint)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 40 def events_socket(endpoint) uri = URI.parse([baseurl, endpoint].join) socket = TCPSocket.new(uri.host, uri.port) ssl_context = OpenSSL::SSL::SSLContext.new ssl_context.ca_file = cacert if ssl ssl_context.set_params(verify_mode: OpenSSL::SSL::VERIFY_PEER) else ssl_context.set_params(verify_mode: OpenSSL::SSL::VERIFY_NONE) end if certificate_request? ssl_context.cert = cert ssl_context.key = key end ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context) ssl_socket.sync_close = true ssl_socket.connect ssl_socket.write "POST #{uri.request_uri} HTTP/1.1\r\n" ssl_socket.write "Accept: application/json\r\n" unless certificate_request? auth = Base64.encode64("#{user}:#{password}") ssl_socket.write "Authorization: Basic #{auth}" end ssl_socket.write "\r\n" ssl_socket end
get(url)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 73 def get(url) client(url).get end
key()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 96 def key file = Proxy::Monitoring::Icinga2::Plugin.settings.api_userkey return unless !file.nil? && File.file?(file) OpenSSL::PKey::RSA.new(File.read(file)) end
password()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 111 def password Proxy::Monitoring::Icinga2::Plugin.settings.api_password end
post(url, data)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 77 def post(url, data) client(url).post(data) end
put(url, data)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 81 def put(url, data) client(url).put(data) end
ssl()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 115 def ssl Proxy::Monitoring::Icinga2::Plugin.settings.verify_ssl end
user()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_client.rb, line 107 def user Proxy::Monitoring::Icinga2::Plugin.settings.api_user end