class Riemann::Client::SSLSocket
Socket: A specialized socket that has been configure
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
# File lib/riemann/client/ssl_socket.rb, line 10 def initialize(options = {}) super(options) @key_file = options[:key_file] @cert_file = options[:cert_file] @ca_file = options[:ca_file] @ssl_verify = options[:ssl_verify] end
Public Instance Methods
connect_nonblock(addr, timeout)
click to toggle source
Internal: Connect to the give address within the timeout.
Make an attempt to connect to a single address within the given timeout.
Return the ::Socket when it is connected, or raise an Error
if no connection was possible.
Calls superclass method
# File lib/riemann/client/ssl_socket.rb, line 34 def connect_nonblock(addr, timeout) sock = super(addr, timeout) ssl_socket = OpenSSL::SSL::SSLSocket.new(sock, ssl_context) ssl_socket.sync = true begin ssl_socket.connect_nonblock rescue IO::WaitReadable unless IO.select([ssl_socket], nil, nil, timeout) raise Timeout, "Could not read from #{host}:#{port} in #{timeout} seconds" end retry rescue IO::WaitWritable unless IO.select(nil, [ssl_socket], nil, timeout) raise Timeout, "Could not write to #{host}:#{port} in #{timeout} seconds" end retry end ssl_socket end
ssl_context()
click to toggle source
# File lib/riemann/client/ssl_socket.rb, line 18 def ssl_context @ssl_context ||= OpenSSL::SSL::SSLContext.new.tap do |ctx| ctx.key = OpenSSL::PKey::RSA.new(File.read(@key_file)) ctx.cert = OpenSSL::X509::Certificate.new(File.read(@cert_file)) ctx.ca_file = @ca_file if @ca_file ctx.min_version = OpenSSL::SSL::TLS1_2_VERSION ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER if @ssl_verify end end