@@ -18,20 +18,22 @@ def call_file_on_server(filename, server)
1818 web_server_port = domain_scheme == 'https' ? 443 : 80
1919 # Use server configuration, if exists
2020 web_server_port = server . fetch ( :web_server_port ) if server . properties . respond_to? ( :web_server_port )
21+ ssl_verify_mode = server . properties . respond_to? ( :ssl_verify_mode ) ? server . fetch ( :ssl_verify_mode ) : OpenSSL ::SSL ::VERIFY_PEER
2122
2223 url = URI . parse ( "#{ domain_scheme } ://#{ domain } " ) . merge ( "/#{ filename } " )
2324 url . port = web_server_port
2425 info "Call URL #{ url } "
2526
26- http_get_with_redirect url
27+ http_get_with_redirect url : url , verify_mode : ssl_verify_mode
2728 end
2829
2930 # Sends a get request that handles redirects
3031 #
3132 # @param url [URI]
3233 # @param limit [Integer] defines how many redirects are allowed
34+ # @param verify_mode [OpenSSL::SSL::verify_mode] ssl verify mode, setting to VERIFY_NONE disables certificate check
3335 # @return [NET::HTTPResponse]
34- def http_get_with_redirect ( url , limit = 5 )
36+ def http_get_with_redirect ( url : , limit : 5 , verify_mode : OpenSSL :: SSL :: VERIFY_PEER )
3537 limit = Integer ( limit )
3638 raise ArgumentError , 'limit cannot be negative' if limit < 0
3739 raise 'too many HTTP redirects' if limit . zero?
@@ -41,16 +43,15 @@ def http_get_with_redirect(url, limit = 5)
4143 http . read_timeout = fetch :http_read_timeout
4244 if url . scheme == 'https'
4345 http . use_ssl = true
44- http . verify_mode = OpenSSL :: SSL :: VERIFY_NONE
46+ http . verify_mode = verify_mode
4547 end
4648 request = Net ::HTTP ::Get . new ( url . path ) # build request
47- # call url
48- response = http . request ( request )
49+ response = http . request ( request ) # call url
4950 if response . is_a? Net ::HTTPRedirection
5051 # Does not handle multiple redirects. Code/idea from http://stackoverflow.com/a/7210600/1796645
5152 location = URI . parse ( response . header [ 'location' ] )
5253 info "redirected to #{ location } "
53- response = http_get_with_redirect ( location , limit - 1 )
54+ response = http_get_with_redirect ( url : location , limit : limit - 1 , verify_mode : verify_mode )
5455 end
5556 response
5657 end
0 commit comments