lib/le/host/http.rb in le-2.5.0 vs lib/le/host/http.rb in le-2.6.0
- old
+ new
@@ -48,14 +48,14 @@
SHUTDOWN_WAIT_STEP = 0.2 # sleep duration (seconds) while waiting to shutdown
include Le::Host::InstanceMethods
#! attr_accessor :token, :queue, :started, :thread, :conn, :local, :debug, :ssl, :datahub_enabled, :dathub_ip, :datahub_port, :host_id, :custom_host, :host_name_enabled, :host_name
- attr_accessor :token, :queue, :started, :thread, :conn, :local, :debug, :ssl, :datahub_enabled, :datahub_ip, :datahub_port, :datahub_endpoint, :host_id, :host_name_enabled, :host_name, :custom_host
+ attr_accessor :token, :queue, :started, :thread, :conn, :local, :debug, :ssl, :datahub_enabled, :datahub_ip, :datahub_port, :datahub_endpoint, :host_id, :host_name_enabled, :host_name, :custom_host, :udp_port
- def initialize(token, local, debug, ssl, datahub_endpoint, host_id, custom_host)
+ def initialize(token, local, debug, ssl, datahub_endpoint, host_id, custom_host, udp_port)
if local
device = if local.class <= TrueClass
if defined?(Rails)
Rails.root.join("log","#{Rails.env}.log")
else
@@ -64,51 +64,52 @@
else
local
end
@logger_console = Logger.new(device)
end
-
+
@local = !!local
- @debug= debug
+ @debug= debug
@ssl = ssl
+ @udp_port = udp_port
@datahub_endpoint = datahub_endpoint
- if !@datahub_endpoint[0].empty?
+ if !@datahub_endpoint[0].empty?
@datahub_enabled=true
@datahub_ip="#{@datahub_endpoint[0]}"
@datahub_port=@datahub_endpoint[1]
else
- @datahub_enabled=false
+ @datahub_enabled=false
end
if (@datahub_enabled && @ssl)
puts ("\n\nYou Cannot have DataHub and SSL enabled at the same time. Please set SSL value to false in your environment.rb file or used Token-Based logging by leaving the Datahub IP address blank. Exiting application. \n\n")
- exit
+ exit
end
#check if DataHub is enabled... if datahub is not enabled, set the token to the token's parameter. If DH is enabled, make the token empty.
if (!datahub_enabled)
@token = token
else
@token = ''
- #! NOTE THIS @datahub_port conditional MAY NEED TO BE CHANGED IF SSL CAN'T WORK WITH DH
+ #! NOTE THIS @datahub_port conditional MAY NEED TO BE CHANGED IF SSL CAN'T WORK WITH DH
@datahub_port = @datahub_port.empty? ? API_SSL_PORT : datahub_port
@datahub_ip = datahub_ip
end
@host_name_enabled=custom_host[0];
@host_name= custom_host[1];
-
+
# Check if host_id is empty -- if not assign, if so, make it an empty string.
if !host_id.empty?
@host_id = host_id
@host_id = "host_id=#{host_id}"
- else
+ else
@host_id=''
end
@@ -148,11 +149,11 @@
end
end
def write(message)
- if !host_id.empty?
+ if !host_id.empty?
message = "#{message} #{ host_id }"
end
if host_name_enabled
message="#{message} #{ host_name }"
@@ -161,11 +162,11 @@
if @local
@logger_console.add(Logger::Severity::UNKNOWN, message)
end
if message.scan(/\n/).empty?
- @queue << "#{ @token } #{ message } \n"
+ @queue << "#{ @token } #{ message } \n"
else
@queue << "#{ message.gsub(/^/, "\1#{ @token } [#{ random_message_id }]") }\n"
end
@@ -193,31 +194,40 @@
@started = false
end
def openConnection
dbg "LE: Reopening connection to Logentries API server"
-
- if !@datahub_enabled
- port = @ssl ? API_SSL_PORT: API_PORT
- socket = TCPSocket.new(API_SERVER, port)
- else
+ if @udp_port
+ host = API_SERVER
+ port = @udp_port
+ elsif @datahub_enabled
+ host = @datahub_ip
port = @datahub_port
- socket = TCPSocket.new(@datahub_ip, port)
+ else
+ host = API_SERVER
+ port = @ssl ? API_SSL_PORT: API_PORT
end
-
- if @ssl
- ssl_context = OpenSSL::SSL::SSLContext.new()
- ssl_context.cert = OpenSSL::X509::Certificate.new(API_CERT)
- ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)
- ssl_socket.sync_close = true
- ssl_socket.connect
- @conn = ssl_socket
+ if @udp_port
+ @conn = UDPSocket.new
+ @conn.connect(host, port)
else
- @conn = socket
+ socket = TCPSocket.new(host, port)
+
+ if @ssl
+ ssl_context = OpenSSL::SSL::SSLContext.new()
+ ssl_context.cert = OpenSSL::X509::Certificate.new(API_CERT)
+ ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)
+ ssl_socket.sync_close = true
+ ssl_socket.connect
+ @conn = ssl_socket
+ else
+ @conn = socket
+ end
end
+
dbg "LE: Connection established"
end
def reopenConnection
closeConnection
@@ -263,10 +273,10 @@
data = @queue.pop
break if data == SHUTDOWN_COMMAND
loop do
begin
@conn.write(data)
- rescue TimeoutError, Errno::EHOSTUNREACH, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ETIMEOUT, EOFError
+ rescue TimeoutError, Errno::EHOSTUNREACH, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ETIMEDOUT, EOFError
dbg "LE: Connection timeout(#{ $! }), try to reopen connection"
reopenConnection
next
rescue
dbg("LE: Got exception in run loop - #{ $! }")