
    ,iT9                        d Z ddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZ ddlmZmZmZ ddlmZmZ dd	lmZmZ g d
Z	 ddlmZmZmZ ddlmZ ddl m!Z! dZ" G d d      Z$de%de&fdZ'de%fdZ(de)de*de&fdZ+d Z,d ej                  d!e-fd"Z.d ej                  d#e-fd$Z/d ej                  de)dej                  fd%Z0d ej                  de&fd&Z1y#  dZ" G d de#      Z G d de#      Z G d de#      ZY xY w)'a_  
_http.py
websocket - WebSocket client library for Python

Copyright 2025 engn33r

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
    N)encodebytes   )WebSocketAddressExceptionWebSocketExceptionWebSocketProxyException)debugdumptrace)DEFAULT_SOCKET_OPTION	recv_linesend)HAVE_SSLssl)get_proxy_info	parse_url)
proxy_infoconnectread_headers)ProxyConnectionError
ProxyErrorProxyTimeoutError)	ProxyType)ProxyTFc                       e Zd Zy)r   N__name__
__module____qualname__     ^/var/www/system.tvplus.app.br/jogos/scrap/venv/lib/python3.12/site-packages/websocket/_http.pyr   r   .       r    r   c                       e Zd Zy)r   Nr   r   r    r!   r   r   1   r"   r    r   c                       e Zd Zy)r   Nr   r   r    r!   r   r   4   r"   r    r   c                       e Zd Zd Zy)r   c                    |j                  dd       | _        | j                  r|j                  dd      | _        |j                  dd       | _        |j                  dd       | _        |j                  dd      | _        |j                  dd       | _        | j
                  d	vrt        d
      y d| _        d | _        d | _        d| _        y )Nhttp_proxy_hosthttp_proxy_portr   http_proxy_authhttp_no_proxy
proxy_typehttphttp_proxy_timeout)r,   socks4socks4asocks5socks5hz7Only http, socks4, socks5 proxy protocols are supported)get
proxy_host
proxy_portauthno_proxyproxy_protocolproxy_timeoutr   )selfoptionss     r!   __init__zproxy_info.__init__9   s    !++&7>??%kk*;Q?DO$5t<DI#KK>DM")++lF"CD!(-A4!HD"" +  !M   DODI DM"(Dr    N)r   r   r   r;   r   r    r!   r   r   8   s    )r    r   urlreturnc                    t         st        d      t        |       \  }}}}|j                  dk(  rd}t        j
                  }ne|j                  dk(  rd}t        j
                  }nC|j                  dk(  rd}t        j                  }n!|j                  dk(  rd}t        j                  }t        j                  |j                  t        |j                        |j                  r|j                  d   nd |j                  r|j                  d	   nd 
      }	|	j                  |||j                        }
|r)t        rt!        |
|j"                  |      }
nt        d      |
|||ffS )Nz>Python Socks is needed for SOCKS proxying but is not availabler.   Fr/   Tr0   r1   r   r   )r+   hostportusernamepasswordrdns)timeoutSSL not available.)HAVE_PYTHON_SOCKSr   r   r7   r   SOCKS4SOCKS5r   creater3   intr4   r5   r   r8   r   _ssl_socketsslopt)r<   r:   proxyhostnamer@   resource	is_securerC   r+   ws_proxysocks              r!   _start_proxied_socketrS   S   sG    L
 	
 +4C.'HdHix'%%
				*%%
				)%%
				*%%
||!!""'**A$"'**A$H HdE4G4GHDtW^^X>D$%9::(D(+++r    c                    |j                   r|s|j                  dk7  rt        | ||      S t        |       \  }}}}|r||||ffS t	        ||||      \  }}	}
|st        d| d|       d }	 t        ||j                  |j                        }|	rt        ||||
      }|r)t        rt        ||j                  |      }nt        d      ||||ffS #  |r|j                           xY w)Nr,   zHost not found.: :rE   )r3   r7   rS   r   _get_addrinfo_listr   _open_socketsockoptrD   _tunnelr   rK   rL   close)r<   r:   rM   socketrN   port_from_urlrO   rP   addrinfo_listneed_tunnelr5   rR   s               r!   r   r   ~   s	    5+?+?6+I$S'5993<S>0HmXy-:::'9-E($M;  #4XJa!OPPDM7??GOOL4=$?D"4B()=>>hx888JJLs   ,A"C C$r@   rP   c                    t        | ||j                  |j                  |j                  |j                        \  }}}	 |s:t        j                  | |dt
        j                  t
        j                        }|dd fS |xr |xs d}t        j                  ||dt
        j                  t
        j                        }|d|fS # t
        j                  $ r}t        |      d }~ww xY w)Nr   FP   T)r   r3   r4   r5   r6   r[   getaddrinfoSOCK_STREAMSOL_TCPgaierrorr   )	rN   r@   rP   rM   phostpportpauthr]   es	            r!   rV   rV      s    (

E5%+ "..$6#5#5v~~M !%--Oe)rE
 #..ua!3!3V^^M !$--?? +'**+s   ;B> :AB> >C!CC!c                    d }| D ]  }|d d \  }}}t        j                   |||      }|j                  |       t        D ]  }	 |j                  |	   |D ]  }	 |j                  |	   |d   }
d }|s	 |j	                  |
       	  |S  |r|S # t         j
                  $ r}|j                          t        |
d         |_        	 t        j                  t        j                  t        j                  f}n/# t        $ r# t        j                  t        j                  f}Y nw xY w|j                  |vr||}Y d }~d }~ww xY w)N      r   )r[   
settimeoutr   
setsockoptr   errorrZ   str	remote_iperrnoECONNREFUSEDWSAECONNREFUSEDENETUNREACHAttributeError)r]   rX   rD   erraddrinfofamilysocktypeprotorR   optsaddressrn   eConnRefuseds                r!   rW   rW      sc   
C! $"*2A,%}}VXu5 ) 	#DDOOT"	# 	#DDOOT"	# 1+W%"  	
 K A$F IK1 << 

"%gaj/K**--))$L
 & K$)$6$68I8I#JLK;;l2Ks<   3BE##D=/C76D=7)D# D="D##D==ErR   rL   c                    |j                  dd       }|sht        j                  |j                  dt        j                              }t        j
                  j                  d      }|||_        |j                  dt        j                        t        j                  k7  rs|j                  dd       }|j                  dd       }|s|r	 |j                  ||       n6t        |d	      r*	 |j                  t        j                  j                          |j                  dd       r7	 |j#                  |d   |j                  dd       |j                  dd              |j                  dt        j                        t        j                  k(  r/|j                  dd      sd|_        t        j                  |_        n<|j                  dd      |_        |j                  dt        j(                        |_        d|v r	 |j+                  |d          d|v rN	 |d   }	t-        |	t.        t0        f      rt3        |	      dk7  rt        d      |	\  }
}}|j#                  |
||       d|v r	 |j5                  |d          |j7                  | |j                  dd      |j                  dd      |      S # t        t        j                  t        f$ r}t        d|       d }~ww xY w# t        j                  $ r}t        d
|       d }~ww xY w# t        t        f$ r}t        d|       d }~wt        j                  $ r}t        d|       d }~ww xY w# t        j                  $ r}t        d|       d }~ww xY w# t        $ r  t        t        j                  f$ r}t        d|       d }~ww xY w# t        $ r}t        d|       d }~ww xY w)Ncontextssl_versionSSLKEYLOGFILE	cert_reqsca_certsca_cert_path)cafilecapathz#SSL CA certificate loading failed: load_default_certsz(SSL default certificate loading failed: certfilekeyfilerB   z'SSL client certificate loading failed: check_hostnameFTciphersz!SSL cipher configuration failed: 
cert_chainrj   z@cert_chain must be a tuple/list of (certfile, keyfile, password)z-SSL client certificate configuration failed: 
ecdh_curvez%SSL ECDH curve configuration failed: do_handshake_on_connectsuppress_ragged_eofs)r   r   server_hostname)r2   r   
SSLContextPROTOCOL_TLS_CLIENTosenvironkeylog_filename	CERT_NONEload_verify_locationsFileNotFoundErrorSSLError
ValueErrorr   hasattrr   PurposeSERVER_AUTHload_cert_chainr   verify_modeCERT_REQUIREDset_ciphers
isinstancetuplelistlenset_ecdh_curvewrap_socket)rR   rL   rN   r   r   keylog_filer   r   rh   r   r   r   rB   s                r!   _wrap_sni_socketr      s   jjD)G..M3;R;R!ST
 jjnn_5"&1G#::k3==1S]]BZZ
D1FZZ5FX111O "67..s{{/F/FG
 ::j$'	X'':&JJy$/JJz40 ::k3==1S]]B6::eL
 &+G""%--G%+ZZ0@$%GG""(**[#:K:K"LGR##F9$56 6!#L1
!*udm<JST@T$Z  /9+'8'''8D 6!V&&vl';<  &

+Dd K#ZZ(>E 	   w *3<<D X,/RSTRU-VWWX
 || ,B1#F  &z2 X(+RSTRU)VWW<< X(+RSTRU)VWWX$ << R(+LQC)PQQR  %s||4 (CA3G   V(+PQRPS)TUUVs   J3 ,)K' (6L ?M AN *N: 3K$KK$'L:LLML--MMMM?,M::M?"N7$N22N7:	OOOuser_ssloptc                    dt         j                  i}|j                  |       t        j                  j                  d      }|r7t        j                  j                  |      r|j                  dd       ||d<   n8|r6t        j                  j                  |      r|j                  dd       ||d<   |j                  dd       r|d   }|j                  dd      }t        | |||      } | S )Nr   WEBSOCKET_CLIENT_CA_BUNDLEr   r   r   r   T)
r   r   updater   r   r2   pathisfileisdirr   )rR   r   rN   rL   	cert_pathr   s         r!   rK   rK   C  s    !2!23F
MM+

;<IGGNN9%OOJ-5&zGGMM)$OOND19!*~zz#T*+,ZZ 0$7ND&(NCDKr    c                    t        d       d| d| d}|d| d| dz  }|rh|d   rc|d   }|d   r|d|d    z  }t        |j                               j                         j	                         j                  d	d
      }|d| dz  }|dz  }t        d|       t        | |       	 t        |       \  }}}|dk7  rt        d|       | S # t        j                  t        f$ r}	t        t        |	            d }	~	ww xY w)NzConnecting proxy...zCONNECT rU   z HTTP/1.1
zHost: z
r   r   
 zProxy-Authorization: Basic zrequest header   z!failed CONNECT via proxy status: )r   base64encodeencodestripdecodereplacer	   r   r   r[   rn   r   r   ro   )
rR   r?   r@   r5   connect_headerauth_strencoded_strstatus_rh   s
             r!   rY   rY   ^  s,   	
 vQtfM:NtfAdV400N Q77!DG9%H"8??#45;;=DDFNNtUWX7}DIIfN	>*~.#D)1 }%(I&&RSSK LL,- .%c!f--.s   )C C?&C::C?c                    d }d }i }t        d       	 t        |       }|j                  d      j                         }|snt        |       |s4|j	                  dd      }t        |d         }t        |      dkD  r|d   }n|j	                  dd      }t        |      dk7  rt        d      |\  }}|j                         dk(  rR|j                  d      rA|j                  d      }	|	|	d	z   |j                         z   |d<   n5|j                         |d<   n!|j                         ||j                         <   &t        d
       |||fS )Nz--- response header ---zutf-8    r   rU   zInvalid headerz
set-cookiez; z-----------------------)
r
   r   r   r   splitrJ   r   r   lowerr2   )
rR   r   status_messageheaderslinestatus_infokvkeyvalueexisting_cookies
             r!   r   r   z  s;   FNG	
#$
{{7#))+d**S!,KQ(F;!#!,QC#B2w!|()9::JCyy{l*w{{</H")++l";".,;d,BU[[],RGL),1KKMGL)',{{}		$/ 2 

#$7N**r    )2__doc__rq   r   r[   base64r   r   _exceptionsr   r   r   _loggingr   r	   r
   _socketr   r   r   _ssl_compatr   r   _urlr   r   __all__python_socks._errorsr   r   r   python_socks._typesr   python_socks.syncr   rF   	Exceptionr   ro   r   rS   r   rJ   boolrV   rW   dictr   rK   rY   r   r   r    r!   <module>r      s;  &  	  . 
 ) ( ; ; & +
3XX-') )6(,s (,u (,V" "J+s +t +u +@(VR6== R$ Rjfmm $ 6&-- S 6== 8!+v}} !+ !+_

Y I y s   C %D