
    hg                         d dl Z d dlmZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZ  G d d	          Z G d
 de
j                  Z G d d          ZdS )    N)
controller)connections
exceptionsflowhttplogplatform)tcp)http1)configmodesroot_context)humanc                   ,    e Zd ZdZddZd Zd Zd ZdS )DummyServerFNc                 "    || _         d| _        d S )Ndummy)r   address)selfr   s     h/var/www/fb-scrape/myenv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/server/server.py__init__zDummyServer.__init__   s        c                     d S N r   channels     r   set_channelzDummyServer.set_channel       r   c                     d S r   r   r   s    r   serve_foreverzDummyServer.serve_forever   r   r   c                     d S r   r   r!   s    r   shutdownzDummyServer.shutdown   r   r   r   )__name__
__module____qualname__boundr   r   r"   r$   r   r   r   r   r      sZ        E           r   r   c                   \     e Zd ZU dZdZej        ed<   dej	        ddf fdZ
d Zd Z xZS )	ProxyServerTr   r   returnNc                 ~   || _         	 t                                          |j        j        |j        j        f           |j        j        dk    rt          j                     dS dS # t          $ rJ}| j
        r| j
                                         t          j        dt          |          z             |d}~ww xY w)zJ
            Raises ServerException if there's a startup problem.
        transparentzError starting proxy server: N)r   superr   optionslisten_hostlisten_portmoder	   init_transparent_mode	Exceptionsocketcloser   ServerExceptionrepr)r   r   e	__class__s      r   r   zProxyServer.__init__#   s     	GG+V^-GH   ~"m33.00000 43 	 	 	{ $!!###,/$q''9 	s   AA( (
B<2AB77B<c                     || _         d S r   )r   r   s     r   r   zProxyServer.set_channel5   s    r   c                 f    t          ||| j        | j                  }|                                 d S r   )ConnectionHandlerr   r   handle)r   connclient_addresshs       r   handle_client_connectionz$ProxyServer.handle_client_connection8   s4    KL	
 
 	





r   )r%   r&   r'   allow_reuse_addressr(   r   Channel__annotations__r   ProxyConfigr   r   rB   __classcell__)r:   s   @r   r*   r*      s         Ev1 d      $        r   r*   c                   &    e Zd Zd Zd Zd Zd ZdS )r=   c                 Z    || _         t          j        ||d           | _        	 || _        d S r   )r   r   ClientConnectionclient_connr   )r   rK   r@   r   r   s        r   r   zConnectionHandler.__init__D   s:    *0&7  	ZIIr   c                    t          j        | j        | j        | j                  }| j        j        j        }|                    d          rWd|v r/t          j	        || j        j
        | j        j        j                  S t          j        || j        j
        j                  S |dk    rt          j        |          S t          |          r ||          S t!          d|z            )Nz	upstream:socksregularzUnknown mitmproxy mode: %s)r   RootContextrK   r   r   r/   r2   
startswithr   SocksUpstreamProxyupstream_serverupstream_authHttpUpstreamProxyr   	HttpProxycallable
ValueError)r   root_ctxr2   s      r   _create_root_layerz$ConnectionHandler._create_root_layerN   s    +KL
 
 {"'??;'' 	B$/K/K'5   .K/7   Y?8,,,d^^ 	B4>>!9D@AAAr   c                 N   |                      dd           d }	 |                                 }| j                            d|          }|r
 |             n# t          j        $ r) |                      t          j        j        d           Y nt          j	        $ r}t          |t          j                  rR|                      d                    |j                  d           |                      t          |          d           nt          |t          j                  r:|                      t!          |          d           |                      dd           nX| j        j        j        r$|                      t          |          d           n#|                      t!          |          d           	 t)          j        dt          |                    }| j                            t1          j        |                     n# t          j        $ r Y nw xY wY d }~n:d }~wt6          $ r* |                      t9          j                    d           Y nw xY w|                      d	d           || j                            d	|           | j                                         d S )
NclientconnectdebuginfozUClient Handshake failed. The client may not trust Selenium Wire's certificate for {}.warnzSInvalid certificate, closing connection. Pass --ssl-insecure to disable validation.i  errorclientdisconnect) r   rY   r   askr   Killr   ErrorKILLED_MESSAGEProtocolException
isinstanceClientHandshakeExceptionformatserverr8   InvalidServerCertificatestrr   r/   suppress_connection_errorsr   make_error_responserK   sendr   assemble_responseTcpExceptionr4   	traceback
format_exctellfinish)r   
root_layerr9   error_responses       r   r>   zConnectionHandler.handlei   s   '***
!	60022J))/:FFJ 
 	8 	8 	8HHTZ.77777+ 	 	 	!Z@AA -SSYSYZ[ZbScSc  
 a'****AzBCC -Q(((npvwwww;&A -HHT!WWg....HHSVVV,,,
!%!9#tAww!G!G %%e&=n&M&MNNNN*    	6 	6 	6HHY)++W55555	6 	#W---!L0*===!!!!!sI   ;A 4IIDH6AHHHHHH4IIc                     d                     t          j        | j        j                  |          }| j                            dt          j        ||                     d S )Nz{}: {}r   )	rh   r   format_addressrK   r   r   rs   r   LogEntry)r   msglevels      r   r   zConnectionHandler.log   sP    ooe243C3KLLcRR%c5!9!9:::::r   N)r%   r&   r'   r   rY   r>   r   r   r   r   r=   r=   B   sW        J J JB B B6*" *" *"X; ; ; ; ;r   r=   )rq   !seleniumwire.thirdparty.mitmproxyr   r   r   r   r   r   r	   %seleniumwire.thirdparty.mitmproxy.netr
   *seleniumwire.thirdparty.mitmproxy.net.httpr   (seleniumwire.thirdparty.mitmproxy.serverr   r   r   'seleniumwire.thirdparty.mitmproxy.utilsr   r   	TCPServerr*   r=   r   r   r   <module>r      s       8 8 8 8 8 8D D D D D D D D D D D D D D D D 5 5 5 5 5 5 < < < < < <D D D D D D D D D D 9 9 9 9 9 9       "! ! ! ! !#- ! ! !HU; U; U; U; U; U; U; U; U; U;r   