class SumologicCloudSyslog::SSLTransport
Supports SSL connection to remote host
Attributes
cert[R]
host[R]
key[R]
port[R]
retries[W]
socket[RW]
ssl_version[R]
Public Class Methods
new(host, port, cert: nil, key: nil, ssl_version: :TLSv1_2, max_retries: 1)
click to toggle source
# File lib/sumologic_cloud_syslog/ssl_transport.rb, line 27 def initialize(host, port, cert: nil, key: nil, ssl_version: :TLSv1_2, max_retries: 1) @host = host @port = port @cert = cert @key = key @ssl_version = ssl_version @retries = max_retries connect end
Public Instance Methods
connect()
click to toggle source
# File lib/sumologic_cloud_syslog/ssl_transport.rb, line 37 def connect @socket = get_ssl_connection @socket.connect end
get_ssl_connection()
click to toggle source
# File lib/sumologic_cloud_syslog/ssl_transport.rb, line 42 def get_ssl_connection tcp = TCPSocket.new(host, port) ctx = OpenSSL::SSL::SSLContext.new ctx.set_params(verify_mode: OpenSSL::SSL::VERIFY_PEER) ctx.ssl_version = ssl_version ctx.cert = OpenSSL::X509::Certificate.new(File.open(cert)) if cert ctx.key = OpenSSL::PKey::RSA.new(File.open(key)) if key OpenSSL::SSL::SSLSocket.new(tcp, ctx) end
method_missing(method_sym, *arguments, &block)
click to toggle source
Forward any methods directly to SSLSocket
# File lib/sumologic_cloud_syslog/ssl_transport.rb, line 70 def method_missing(method_sym, *arguments, &block) @socket.send(method_sym, *arguments, &block) end
write(s)
click to toggle source
Allow to retry on failed writes
# File lib/sumologic_cloud_syslog/ssl_transport.rb, line 55 def write(s) begin retry_id ||= 0 @socket.send(:write, s) rescue => e if (retry_id += 1) < @retries connect retry else raise e end end end