Fix SSL issues when reading remote ZIP files
This is caused by our self-signed PureStorage certs. Once that's taken care of this commit can be reverted.
This commit is contained in:
@@ -65,7 +65,7 @@ class ZipFile
|
||||
|
||||
def read_from_s3(blob)
|
||||
url = blob.url(expires_in: 6.hour)
|
||||
remote_io = ZipKit::RemoteIO.new(url)
|
||||
remote_io = RemoteIO.new(url)
|
||||
reader = Reader.new(remote_io)
|
||||
yield reader
|
||||
end
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
class ZipFile::RemoteIO < ZipKit::RemoteIO
|
||||
protected
|
||||
def request_range(range)
|
||||
with_http do |http|
|
||||
request = Net::HTTP::Get.new(@uri)
|
||||
request.range = range
|
||||
response = http.request(request)
|
||||
|
||||
case response.code
|
||||
when "206", "200"
|
||||
response.body
|
||||
else
|
||||
raise "Remote at #{@uri} replied with code #{response.code}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def request_object_size
|
||||
with_http do |http|
|
||||
request = Net::HTTP::Get.new(@uri)
|
||||
request.range = 0..0
|
||||
response = http.request(request)
|
||||
|
||||
case response.code
|
||||
when "206"
|
||||
content_range_header_value = response["Content-Range"]
|
||||
content_range_header_value.split("/").last.to_i
|
||||
when "200"
|
||||
response["Content-Length"].to_i
|
||||
else
|
||||
raise "Remote at #{@uri} replied with code #{response.code}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def with_http
|
||||
http = Net::HTTP.new(@uri.hostname, @uri.port)
|
||||
http.use_ssl = @uri.scheme == "https"
|
||||
# FIXME: Disable SSL verification for now to avoid issues with our self-signed certificates for PureStorage
|
||||
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
||||
http.start { yield http }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user