# File lib/mechanize/chain/auth_headers.rb, line 37 37: def gen_auth_header(uri, request, auth_header, is_IIS = false) 38: auth_header =~ /^(\w+) (.*)/ 39: 40: params = {} 41: $2.gsub(/(\w+)=("[^"]*"|[^,]*)/) { 42: params[$1] = $2.gsub(/^"/, '').gsub(/"$/, '') 43: } 44: 45: @@nonce_count[params['nonce']] += 1 46: 47: a_1 = "#{@user}:#{params['realm']}:#{@password}" 48: a_2 = "#{request.method}:#{uri.path}" 49: request_digest = '' 50: request_digest << Digest::MD5.hexdigest(a_1) 51: request_digest << ':' << params['nonce'] 52: request_digest << ':' << ('%08x' % @@nonce_count[params['nonce']]) 53: request_digest << ':' << CNONCE 54: request_digest << ':' << params['qop'] 55: request_digest << ':' << Digest::MD5.hexdigest(a_2) 56: 57: header = '' 58: header << "Digest username=\"#{@user}\", " 59: if is_IIS then 60: header << "qop=\"#{params['qop']}\", " 61: else 62: header << "qop=#{params['qop']}, " 63: end 64: header << "uri=\"#{uri.path}\", " 65: header << %{ algorithm opaque nonce realm }.map { |field| 66: next unless params[field] 67: "#{field}=\"#{params[field]}\"" 68: }.compact.join(', ') 69: 70: header << ", nc=#{'%08x' % @@nonce_count[params['nonce']]}, " 71: header << "cnonce=\"#{CNONCE}\", " 72: header << "response=\"#{Digest::MD5.hexdigest(request_digest)}\"" 73: 74: return header 75: end
# File lib/mechanize/chain/auth_headers.rb, line 16 16: def handle(ctx, params) 17: uri = params[:uri] 18: request = params[:request] 19: 20: if( @auth_hash[uri.host] ) 21: case @auth_hash[uri.host] 22: when :basic 23: request.basic_auth(@user, @password) 24: when :iis_digest 25: digest_response = self.gen_auth_header(uri,request, @digest, true) 26: request['Authorization'] = digest_response 27: when :digest 28: if @digest 29: digest_response = self.gen_auth_header(uri,request, @digest) 30: request['Authorization'] = digest_response 31: end 32: end 33: end 34: super 35: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.