
    c                     @   d dl Z d dlZd dlZd dlZ ej
                  dej                        Z G d de      Z	d Z
 G d dej                        Zedk(  rd dlZd dlZd	ej                   _        d	ej$                  _         e j&                  e j(                  
       d dlZ ej,                         Z ej0                  e      Z e       Z ej6                  ee      j9                  ej:                  d	         Z edej@                  z  ejC                                yy)    Nz (?:.*,)*\s*Negotiate\s*([^,]*),?c                       e Zd ZdZy)GssapiAuthErrorz-raised on error during authentication processN)__name__
__module____qualname____doc__     ;/usr/lib/python3/dist-packages/logilab/common/urllib2ext.pyr   r      s    7r
   r   c                     | j                  d      D ],  }t        j                  |      }|s|j                  d      c S  y )Nzwww-authenticate   )
getheadersRGXsearchgroup)headersauthreqmatchs      r   get_negociate_valuer      s<    %%&89 "

7#;;q>!"r
   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)HTTPGssapiAuthHandlerz7Negotiate HTTP authentication using context from GSSAPIi  c                 $    | j                          y N)_resetselfs    r   __init__zHTTPGssapiAuthHandler.__init__   s    r
   c                      d| _         d | _        y )Nr   )_retried_contextr   s    r   r   zHTTPGssapiAuthHandler._reset   s    r
   c                 \    | j                    t        j                  | j                          y y r   )r    krbauthGSSClientCleanr   s    r   clean_contextz#HTTPGssapiAuthHandler.clean_context#   s#    ==$""4==1 %r
   c                    	 | j                   dkD  r't        j                  |j                         dd|d       | xj                   dz  c_         t	        j
                  d| j                   z         t        |      }|7t	        j
                  d       	 | j                          | j                          y t	        j
                  d|z         t        j                  d|j                         z        \  }| _        |dk  rt        d	|z        t        j                  | j                  |      }|d
k  rt        d|z        t        j                  | j                        }t	        j
                  d|d d z         |j!                  dd|z         | j"                  j%                  |      }	t        |	j'                               }|t	        j(                  d       nKt	        j
                  d|z         t        j                  | j                  |      }|dk  rt        d|z        |	| j                          | j                          S # t        $ r(}
t	        j*                  t-        |
             Y d }
~
nd }
~
ww xY w	 | j                          | j                          y # | j                          | j                          w xY w)N   i  znegotiate auth failedr   zgssapi handler, try %sz/no negociate found in a www-authenticate headerz(HTTPGssapiAuthHandler: negotiate 1 is %rzHTTP@%sz*HTTPGssapiAuthHandler: init failed with %dr   z,HTTPGssapiAuthHandler: step 1 failed with %dz/HTTPGssapiAuthHandler: client response is %s...
   AuthorizationzNegotiate %sz4HTTPGssapiAuthHandler: failed to authenticate serverz%HTTPGssapiAuthHandler negotiate 2: %sz,HTTPGssapiAuthHandler: step 2 failed with %d)r   urllib2	HTTPErrorget_full_urlloggingdebugr   r$   r   r"   authGSSClientInitget_hostr    r   authGSSClientStepauthGSSClientResponseadd_unredirected_headerparentopeninfowarningerrorrepr)r   reqfpcodemsgr   	negotiateresultclient_responseserver_responseexcs              r   http_error_401z$HTTPGssapiAuthHandler.http_error_401'   sE   #	}}q ''$$&-Dgt  MMQMMM2T]]BC+G4I OP0  KKM1 MMDyPQ$'$9$9)clln:T$U!FDMz%&RU[&[\\**4==)DFz%&TW]&]^^!77FOMMKo^a_aNbbc''/9YZ"kk..s3O+O,@,@,BCI  VWE	QR..t}}iHA:)*X[a*abb"  KKM	  	%MM$s)$$	%$ KKM  KKMs1   BI 3E3I 	I8I3.J 3I88J "J?N)	r   r   r   r   handler_orderr   r   r$   rB   r	   r
   r   r   r      s    AM2$r
   r   __main__r   )levelz
response: %s
--------------
)"r,   r)   kerberosr"   recompileIr   	Exceptionr   r   BaseHandlerr   r   syshttplibHTTPConnection
debuglevelHTTPSConnectionbasicConfigDEBUG	cookielib	CookieJarcjHTTPCookieProcessorchhbuild_openerr4   argvresponseprintr;   r5   r	   r
   r   <module>r]      s      
bjj4bdd;8i 8"4G// 4n z ()G%)*G&Ggmm,				B	$	$	$R	(BA#w##Ar*//<H	
,x}}
<hmmoN% r
   