Class: Evervault::Http::RequestIntercept

Inherits:
Object
  • Object
show all
Defined in:
lib/evervault/http/request_intercept.rb

Instance Method Summary collapse

Constructor Details

#initialize(request:, ca_host:, api_key:, base_url:, relay_url:) ⇒ RequestIntercept

Returns a new instance of RequestIntercept.



80
81
82
83
84
85
86
87
88
89
# File 'lib/evervault/http/request_intercept.rb', line 80

def initialize(request:, ca_host:, api_key:, base_url:, relay_url:)
  NetHTTPOverride.set_api_key(api_key)
  NetHTTPOverride.set_relay_url(relay_url)
  
  @request = request
  @base_url = base_url
  @ca_host = ca_host
  @expire_date = nil
  @initial_date = nil
end

Instance Method Details

#get_certObject



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/evervault/http/request_intercept.rb', line 118

def get_cert()
  ca_content = nil
  i = 0

  while !ca_content && i < 1
    i += 1
    begin
      ca_content = @request.execute("get", @ca_host, nil, {}).body
    rescue;
    end
  end

  if !ca_content || ca_content == ""
    raise Evervault::Errors::CertDownloadError.new("Unable to install the Evervault root certificate from #{@ca_host}")
  end

  cert = OpenSSL::X509::Certificate.new ca_content
  set_cert_expire_date(cert)
  NetHTTPOverride.set_cert(cert)
end

#is_certificate_expiredObject



91
92
93
94
95
96
97
98
99
# File 'lib/evervault/http/request_intercept.rb', line 91

def is_certificate_expired()
  if @expire_date
    now = Time.now
    if now > @expire_date || now < @initial_date
      return true
    end
  end
  return false
end

#set_cert_expire_date(cert) ⇒ Object



139
140
141
142
143
144
145
146
# File 'lib/evervault/http/request_intercept.rb', line 139

def set_cert_expire_date(cert)
  begin
    @expire_date = cert.not_after
    @initial_date = cert.not_before
  rescue => exception
    @expire_date = nil
  end
end

#setupObject



114
115
116
# File 'lib/evervault/http/request_intercept.rb', line 114

def setup
  get_cert()
end

#setup_decryption_domains(decryption_domains) ⇒ Object



101
102
103
104
105
# File 'lib/evervault/http/request_intercept.rb', line 101

def setup_decryption_domains(decryption_domains)
  NetHTTPOverride.add_get_decryption_domains_func(-> {
    decryption_domains
  })
end

#setup_outbound_relay_configObject



107
108
109
110
111
112
# File 'lib/evervault/http/request_intercept.rb', line 107

def setup_outbound_relay_config
  @relay_outbound_config = Evervault::Http::RelayOutboundConfig.new(base_url: @base_url, request: @request)
  NetHTTPOverride.add_get_decryption_domains_func(-> {
    @relay_outbound_config.get_destination_domains
  })
end