Class: Sonic::Protocol::TCP

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/sonic/protocols/tcp.rb

Instance Method Summary collapse

Constructor Details

#initialize(service_checker) ⇒ TCP

Returns a new instance of TCP.



8
9
10
11
12
13
14
15
# File 'lib/sonic/protocols/tcp.rb', line 8

def initialize(service_checker)
  @service_checker = service_checker
  @host = service_checker.host
  @port = service_checker.port
  @payload = service_checker.payload
  @ssl_key = service_checker.ssl_key
  @ssl_cert = service_checker.ssl_cert
end

Instance Method Details

#sendObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/sonic/protocols/tcp.rb', line 17

def send
  begin
    connection = TCPSocket.new(@host, @port)
    if @ssl_cert && @ssl_key
      ssl_context = OpenSSL::SSL::SSLContext.new()
      ssl_context.cert = OpenSSL::X509::Certificate.new(File.read("#{Dir.pwd}/ssl/#{@ssl_cert}"))
      ssl_context.ca_file = "#{Dir.pwd}/ssl/#{@ssl_cert}"
      ssl_context.key = OpenSSL::PKey::RSA.new(File.read("#{Dir.pwd}/ssl/#{@ssl_key}"))
      socket = OpenSSL::SSL::SSLSocket.new(connection, ssl_context)
      socket.sync_close = true
      socket.connect
    else
      socket = connection
    end
    socket.syswrite(@payload)
    read_tcp_response(socket)
    socket.close
    socket = nil
    if @service_checker.response
      true
    else
      false
    end
  rescue Exception => e
    @service_checker.error = e.to_s
    false
  end

end