
    'h                         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y)    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y)DummyServerFNc                      || _         d| _        y )Ndummy)r   address)selfr   s     o/var/www/html/scrapers/gsc/venv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/server/server.py__init__zDummyServer.__init__   s        c                      y N r   channels     r   set_channelzDummyServer.set_channel       r   c                      y r   r   r   s    r   serve_foreverzDummyServer.serve_forever   r   r   c                      y r   r   r!   s    r   shutdownzDummyServer.shutdown   r   r   r   )__name__
__module____qualname__boundr   r   r"   r$   r   r   r   r   r      s    Er   r   c                   p     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                          yy# t        $ rM}| j                  r| j                  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     	G++V^^-G-GH ~~""m3..0 4 	{{!!#,,/$q'9	s   A&A2 2	C;ACCc                     || _         y r   )r   r   s     r   r   zProxyServer.set_channel5   s	    r   c                 h    t        ||| j                  | j                        }|j                          y r   )ConnectionHandlerr   r   handle)r   connclient_addresshs       r   handle_client_connectionz$ProxyServer.handle_client_connection8   s+    KKLL	
 	

r   )r%   r&   r'   allow_reuse_addressr(   r   Channel__annotations__r   ProxyConfigr   r   rB   __classcell__)r:   s   @r   r*   r*      s=    Ev11 d $r   r*   c                   $    e Zd Zd Zd Zd Zd Zy)r=   c                 Z    || _         t        j                  ||d       | _        	 || _        y r   )r   r   ClientConnectionclient_connr   )r   rK   r@   r   r   s        r   r   zConnectionHandler.__init__D   s5    *0&77 	ZIr   c                 F   t        j                  | j                  | j                  | j                        }| j                  j
                  j                  }|j                  d      rd|v rIt        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    ++KKLL
 {{""''??;'$//KK//KK''55  ..KK//77  Y??8,,d^>!9D@AAr   c                    | j                  dd       d }	 | j                         }| j                  j                  d|      }|r |        | j                  d	d       || j                  j=                  d	|       | j,                  j?                          y # t        j
                  $ r- | j                  t        j                  j                  d       Y t        j                  $ rs}t        |t        j                        rG| j                  dj                  |j                        d       | j                  t        |      d       nt        |t        j                        r.| j                  t!        |      d       | j                  dd       nW| j"                  j$                  j&                  r| j                  t        |      d       n| j                  t!        |      d       	 t)        j*                  dt        |            }| j,                  j/                  t1        j2                  |             n# t        j4                  $ r Y nw xY wY d }~d }~wt6        $ r( | j                  t9        j:                         d       Y >w xY w)
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2J))/:FJ> 	#W-!LL0*=!C  	8HHTZZ..7++ 	!Z@@ASSYSYZ[ZbZbSc
 a'*AzBBCQ(npvw;;&&AAHHT!Wg.HHSVV,
!%!9!9#tAw!G  %%e&=&=n&MN**  	6HHY))+W5	6sI   5B =J
J
(D I)AH76I7I
III0J
	J
c                     dj                  t        j                  | j                  j                        |      }| j
                  j                  dt        j                  ||             y )Nz{}: {}r   )	rh   r   format_addressrK   r   r   rs   r   LogEntry)r   msglevels      r   r   zConnectionHandler.log   sH    ooe2243C3C3K3KLcR%c5!9:r   N)r%   r&   r'   r   rY   r>   r   r   r   r   r=   r=   B   s    J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      sS     8D D 5 <D D 9 "!#-- !HU; U;r   