Server IP : 172.67.158.161 / Your IP : 3.22.66.132 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/http/ |
Upload File : |
# Handle HTTP redirects # # @api private class Puppet::HTTP::Redirector # Create a new redirect handler # # @param [Integer] redirect_limit maximum number of redirects allowed # # @api private def initialize(redirect_limit) @redirect_limit = redirect_limit end # Determine of the HTTP response code indicates a redirect # # @param [Net::HTTP] request request that received the response # @param [Puppet::HTTP::Response] response # # @return [Boolean] true if the response code is 301, 302, or 307. # # @api private def redirect?(request, response) # Net::HTTPRedirection is not used because historically puppet # has only handled these, and we're not a browser case response.code when 301, 302, 307 true else false end end # Implement the HTTP request redirection # # @param [Net::HTTP] request request that has been redirected # @param [Puppet::HTTP::Response] response # @param [Integer] redirects the current number of redirects # # @return [Net::HTTP] A new request based on the original request, but with # the redirected location # # @api private def redirect_to(request, response, redirects) raise Puppet::HTTP::TooManyRedirects.new(request.uri) if redirects >= @redirect_limit location = parse_location(response) url = request.uri.merge(location) new_request = request.class.new(url) new_request.body = request.body request.each do |header, value| unless Puppet[:location_trusted] # skip adding potentially sensitive header to other hosts next if header.casecmp('Authorization').zero? && request.uri.host.casecmp(location.host) != 0 next if header.casecmp('Cookie').zero? && request.uri.host.casecmp(location.host) != 0 end # Allow Net::HTTP to set its own Accept-Encoding header to avoid errors with HTTP compression. # See https://github.com/puppetlabs/puppet/issues/9143 next if header.casecmp('Accept-Encoding').zero? new_request[header] = value end # mimic private Net::HTTP#addr_port new_request['Host'] = if (location.scheme == 'https' && location.port == 443) || (location.scheme == 'http' && location.port == 80) location.host else "#{location.host}:#{location.port}" end new_request end private def parse_location(response) location = response['location'] raise Puppet::HTTP::ProtocolError.new(_("Location response header is missing")) unless location URI.parse(location) rescue URI::InvalidURIError => e raise Puppet::HTTP::ProtocolError.new(_("Location URI is invalid: %{detail}") % { detail: e.message}, e) end end