3 ”Re@ã@s\dZddlmZddlmZddlmZddlmZddlm Z ee ƒZ Gdd „d eƒZ d S) z NTLM authenticating pool, contributed by erikcederstran Issue #10, see: http://code.google.com/p/urllib3/issues/detail?id=10 é)Úabsolute_import)Ú getLogger)Úntlmé)ÚHTTPSConnectionPool)ÚHTTPSConnectioncs:eZdZdZdZ‡fdd„Zdd„Zd ‡fd d „ Z‡ZS) ÚNTLMConnectionPoolzQ Implements an NTLM authentication version of an urllib3 connection pool ÚhttpscsLtt|ƒj||Ž||_||_|jddƒ}|djƒ|_|d|_||_ dS)zÅ authurl is a random URL on the server that is protected by NTLM. user is the Windows user, probably in the DOMAIN\username format. pw is the password for the user. ú\érN) ÚsuperrÚ__init__ÚauthurlÚrawuserÚsplitÚupperÚdomainÚuserÚpw)ÚselfrrrÚargsÚkwargsZ user_parts)Ú __class__©ú“/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.pyr s  zNTLMConnectionPool.__init__c Csø|jd7_tjd|j|j|jƒddi}d}d}t|j|jd�}dtj|j ƒ||<tjd |ƒ|j d |jd|ƒ|j ƒ}t |j ƒƒ}tjd |j|jƒtjd |ƒtjd |jdƒƒd|_||jdƒ}d}x(|D] } | dd…dkrØ| dd…}qØW|dk�rtd|||fƒ‚tj|ƒ\} } tj| |j|j|j| ƒ} d| ||<tjd |ƒ|j d |jd|ƒ|j ƒ}tjd |j|jƒtjd t |j ƒƒƒtjd |jƒdd…ƒ|jdk�rä|jdk�rÐtdƒ‚td|j|jfƒ‚d|_tjdƒ|S)Nr z3Starting NTLM HTTPS connection no. %d: https://%s%sÚ Connectionz Keep-AliveÚ Authorizationzwww-authenticate)ÚhostÚportzNTLM %szRequest headers: %sÚGETzResponse status: %s %szResponse headers: %szResponse data: %s [...]édz, ézNTLM z!Unexpected %s response header: %séÈi‘z3Server rejected request: wrong username or passwordzWrong server response: %s %szConnection established)Únum_connectionsÚlogÚdebugrrrrrZcreate_NTLM_NEGOTIATE_MESSAGErÚrequestÚ getresponseÚdictÚ getheadersÚstatusÚreasonÚreadÚfprÚ ExceptionZparse_NTLM_CHALLENGE_MESSAGEZ create_NTLM_AUTHENTICATE_MESSAGErrr) rÚheadersZ req_headerZ resp_headerÚconnÚresZreshdrZauth_header_valuesZauth_header_valueÚsZServerChallengeZNegotiateFlagsZauth_msgrrrÚ _new_conn's\           zNTLMConnectionPool._new_connNéTcs0|dkr i}d|d<tt|ƒj|||||||ƒS)Nz Keep-Aliver)r rÚurlopen)rÚmethodÚurlÚbodyr/ÚretriesÚredirectÚassert_same_host)rrrr5js  zNTLMConnectionPool.urlopen)NNr4TT) Ú__name__Ú __module__Ú __qualname__Ú__doc__Úschemer r3r5Ú __classcell__rr)rrrs GrN) r?Ú __future__rÚloggingrrÚrZpackages.six.moves.http_clientrr<r$rrrrrÚs