U ÀÒ.eiã@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 ZhttpscsLtt|ƒj||Ž||_||_| dd¡}|d ¡|_|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__©úH/usr/lib/python3.8/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.pyr s  zNTLMConnectionPool.__init__c Csô|jd7_t d|j|j|j¡ddi}d}d}t|j|jd}dt |j ¡||<t d |¡|  d |jd|¡|  ¡}t |  ¡ƒ}t d |j|j¡t d |¡t d | d¡¡d|_|| d¡}d}|D] } | dd…dkrÖ| dd…}qÖ|dkrtd|||fƒ‚t |¡\} } t | |j|j|j| ¡} d| ||<t d |¡|  d |jd|¡|  ¡}t d |j|j¡t d t |  ¡ƒ¡t d | ¡dd…¡|jdkrà|jdkrÌtdƒ‚td|j|jfƒ‚d|_t d¡|S)Nr z3Starting NTLM HTTPS connection no. %d: https://%s%sÚ Connectionú Keep-AliveZ Authorizationzwww-authenticate)ÚhostÚportzNTLM %szRequest headers: %sZGETzResponse 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)Znum_connectionsÚlogÚdebugrr rrrZcreate_NTLM_NEGOTIATE_MESSAGErZrequestZ getresponseÚdictZ getheadersZstatusÚreasonÚreadÚfprÚ ExceptionZparse_NTLM_CHALLENGE_MESSAGEZ create_NTLM_AUTHENTICATE_MESSAGErrr) rÚheadersZ req_headerZ resp_headerZconnÚresZreshdrZauth_header_valuesZauth_header_valueÚsZServerChallengeZNegotiateFlagsZauth_msgrrrÚ _new_conn'srüÿ     ÿÿÿ    ÿ zNTLMConnectionPool._new_connNéTc s0|dkr i}d|d<tt|ƒ |||||||¡S)Nrr)r rÚurlopen)rÚmethodZurlZbodyr)ZretriesZredirectZassert_same_hostrrrr.ls  ÿzNTLMConnectionPool.urlopen)NNr-TT) Ú__name__Ú __module__Ú __qualname__Ú__doc__Zschemer r,r.Ú __classcell__rrrrrs IørN) r3Z __future__rZloggingrrÚrZpackages.six.moves.http_clientrr0r"rrrrrÚs