module Canari::CertStream
Attributes
url[RW]
Public Instance Methods
attach_listeners()
click to toggle source
# File lib/canari/cert_stream.rb, line 38 def attach_listeners @driver.on(:open) { |_event| Canari.logger.info 'Connection opened' } @driver.on(:message) do |event| handle_message(event.data) end @driver.on(:close) { |event| finalize(event) } end
connection_completed()
click to toggle source
# File lib/canari/cert_stream.rb, line 12 def connection_completed @driver = WebSocket::Driver.client(self) @driver.add_extension(PermessageDeflate) attach_listeners @driver.start end
finalize(event)
click to toggle source
# File lib/canari/cert_stream.rb, line 27 def finalize(event) Canari.logger.info "Connection closed, #{event.code}: #{event.reason}" close_connection Canari.logger.info 'Reconnecting' reconnect(uri.host, 443) end
handle_message(data)
click to toggle source
# File lib/canari/cert_stream.rb, line 46 def handle_message(data) data = JSON.parse(data) return unless data['message_type'] == 'certificate_update' cert = data['data']['leaf_cert'] matching_names = DomainCache.fetch(cert['all_domains']) return unless matching_names.any? Canari.logger.info "Certificate matching #{matching_names}" Notifier.notify(matching_names, data) end
receive_data(data)
click to toggle source
# File lib/canari/cert_stream.rb, line 19 def receive_data(data) @driver.parse(data) end
uri()
click to toggle source
# File lib/canari/cert_stream.rb, line 34 def uri URI.parse(url) end
write(data)
click to toggle source
# File lib/canari/cert_stream.rb, line 23 def write(data) send_data(data) end