
    vg~                         d Z ddlZddlZddlZddlmZmZ ddlmZmZ ddlm	Z	 ddlm
Z
 ddlmc mZ ddlmc mZ ej        Zddlmc mZ  G d d          Z G d	 d
          Z ej        dej                  ZdS )z>$Id: auth_handler.py,v 1.6 2002/11/25 19:40:23 akuchling Exp $    N)	as_stringas_bytes)encodestringdecodestring)long)md5c                   :    e Zd Zd
dZd Zd Zd Zd Zd Zd Z	d	S )auth_handlerdefaultc                     t          |          | _        || _        || _        t	          j                    | _        t	          j                    | _        d S N)dictionary_authorizer
authorizerhandlerrealmcounter
pass_count
fail_count)selfdictr   r   s       [/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/medusa/auth_handler.py__init__zauth_handler.__init__#   sA    /66
!/++!/++    c                 6    | j                             |          S r   )r   matchr   requests     r   r   zauth_handler.match*   s    |!!7+++r   c                 "   t          t          |j                  }|r\|                                }|dk    rt          t          |j        d          }	 t	          t          t          |                              }n?#  t          j        	                    d|z             |
                    d           Y d S xY w|                    dd          }| j                            |          r<| j                                         ||_        | j                            |           d S |                     |           d S t          j        	                    d|z             |                     |           d S |                     |           d S )Nbasic   z"malformed authorization info <%s>
i  :   z$unknown/unsupported auth method: %s
)
get_headerAUTHORIZATIONheaderlowerr   r   r   sysstderrwriteerrorsplitr   	authorizer   	increment	auth_infor   handle_requesthandle_unauthorized)r   r   schemecookiedecodedr.   s         r   r/   zauth_handler.handle_request.   sy   ]GN;; 	/\\^^F  #]GNAFF'Xf5E5E(F(FGGGGJ$$%JV%STTTMM3'''FF#MM#q11	?,,i88 7O--///(1G%L//99999,,g66666 
  !H6!QRRR((11111 $$g.....s   )A? ?9B;c                     | j                                          |j                            d            d|d<   d| j        z  |d<   |                    d           d S )Nclose
ConnectionzBasic realm="%s"zWWW-Authenticatei  )r   r-   channelset_terminatorr   r*   r   s     r   r0   z auth_handler.handle_unauthorizedR   sb     	!!###&&--- '&84:&E"#sr   c                 @   |j         j        j        }t          t	          t          j                                        }|dd         dk    r
|dd         }t          t          |                     }d                    |||g          }|                     |          S )zEA digest-authentication <nonce>, constructed as suggested in RFC 2069NLr!   )	r7   serveripstrr   timeidjoin
apply_hash)r   r   r=   nowprivate_keynonces         r   
make_noncezauth_handler.make_nonce[   s    _#&$ty{{##$$rss8s??crc(C2t99oo"c;/00&&&r   c                     t                      }|                    |           |                                }t          |          dd         S )z;Apply MD5 to a string <s>, then wrap it in base64 encoding.Nr:   )r   updatedigestr   )r   smds       r   rB   zauth_handler.apply_hashe   s>    EE	!HHJJQ$$r   c                 4   t          j        d| j        z            g}t          | j        d          r,|                    | j                                                   |                    t          j        d                     t          j        |          S )NzB<li>Authorization Extension : <b>Unauthorized requests:</b> %s<ul>statusz</ul>)	producerssimple_producerr   hasattrr   appendrN   composite_producer)r   rs     r   rN   zauth_handler.statusm   s     )?AEQ  DL(++ 	-HHdl))++,,,	)733	 	 	 +A...r   N)r   )
__name__
__module____qualname__r   r   r/   r0   rF   rB   rN    r   r   r
   r
   "   s        , , , ,, , ,"/ "/ "/H  ' ' '% % %/ / / / /r   r
   c                       e Zd Zd Zd ZdS )r   c                     || _         d S r   r   )r   r   s     r   r   zdictionary_authorizer.__init__}   s    			r   c                 H    |\  }}|| j         v r| j         |         |k    rdS dS )Nr"   r   r[   )r   r.   usernamepasswords       r   r,   zdictionary_authorizer.authorize   s4    (8ty  TYx%8H%D%D11r   N)rU   rV   rW   r   r,   rX   r   r   r   r   |   s2              r   r   zAuthorization: ([^ ]+) (.*))RCS_IDrer'   r?   supervisor.compatr   r   r   r   r   r   supervisor.medusa.countermedusar   !supervisor.medusa.default_handlerdefault_handlerr#   supervisor.medusa.producersrO   r
   r   compile
IGNORECASEr$   rX   r   r   <module>ri      sQ   K 
			 



  1 1 1 1 1 1 1 1 8 8 8 8 8 8 8 8 " " " " " " ! ! ! ! ! ! + + + + + + + + + ; ; ; ; ; ; ; ; ;'
 / / / / / / / / /X/ X/ X/ X/ X/ X/ X/ X/t	 	 	 	 	 	 	 	 
%

 
r   