HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/1233/cwd/usr/lib/python3/dist-packages/websocket/__pycache__/_http.cpython-310.pyc
o

K�a�-�@sdZddlZddlZddlZddlZddlTddlTddlTddlTddl	Tddl
mZgd�Z
zddlmZddlTddlmZd	ZWnd
ZGdd�de�ZGd
d�de�ZGdd�de�ZYGdd�d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Z dS)#a_
_http.py
websocket - WebSocket client library for Python

Copyright 2021 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)�
proxy_info�connect�read_headers)�Proxy)�	ProxyTypeTFc@�eZdZdS)�
ProxyErrorN��__name__�
__module__�__qualname__�rr�1/usr/lib/python3/dist-packages/websocket/_http.pyr*�rc@r
)�ProxyTimeoutErrorNrrrrrr-rrc@r
)�ProxyConnectionErrorNrrrrrr0rrc@seZdZdd�ZdS)rcKs�|�dd�|_|jr8|�dd�|_|�dd�|_|�dd�|_|�dd�|_|�dd�|_|jd	vr6td
��dSd|_d|_d|_d|_dS)N�http_proxy_host�http_proxy_portr�http_proxy_auth�
http_no_proxy�
proxy_type�http�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�optionsrrr�__init__6s
�
zproxy_info.__init__N)r
rrr)rrrrr4srcCs�tstd��t|�\}}}}|jdkrd}tj}|jdkr"d}tj}|jdkr,d}tj}|jdkr6d}tj}tj||j	t
|j�|jrG|jdnd|jrP|jd	nd|d
�}	|	j
|||jd�}
|rjtrjt|
|j|�}
n|rptd��|
|||ffS)
Nz>Python Socks is needed for SOCKS proxying but is not availablerFrrTrrr)r�host�port�username�password�rdns)r�SSL not available.)�HAVE_PYTHON_SOCKS�WebSocketException�	parse_urlr%r	�SOCKS5�SOCKS4r�creater!�intr"r#rr&�HAVE_SSL�_ssl_socket�sslopt)�urlr(�proxy�hostnamer+�resource�	is_securer.r�ws_proxy�sockrrr�_start_proxied_socketHs:



�rAcCs�|jr|s|jdkst|||�St|�\}}}}|r!||||ffSt||||�\}}	}
|s9td|dt|���d}z)t||j|j	�}|	rMt
||||
�}|r]trYt||j
|�}ntd��||||ffWS|rn|���)NrzHost not found.: �:r/)r!r%rAr2�_get_addrinfo_listr1�str�_open_socket�sockoptr�_tunnelr7r8r9�close)r:r(r;�socketr<r+r=r>�
addrinfo_list�need_tunnelr#r@rrrrns4
��rc	
Cs�t|||j|j|j|j�\}}}z*|s$t�||dtjtj�}|ddfWS|r(|p)d}t�||dtjtj�}|d|fWStj	yK}zt
|��d}~ww)NrF�PT)�get_proxy_infor!r"r#r$rI�getaddrinfo�SOCK_STREAM�SOL_TCP�gaierror�WebSocketAddressException)	r<r+r>r;�phost�pport�pauthrJ�errrrC�s 
����rCc
Csd}|D]�}|dd�\}}}t�|||�}|�|�tD]}	|j|	�q|D]}	|j|	�q'|d}
d}|s�z
|�|
�W	|Stjy�}z9t|
d�|_ztj	tj
f}Wntj	f}Y|jtjkrnWYd}~q5|j|vr{|}WYd}~q5|r�|��|�d}~wwq|r�|�|S)N��r)
rI�
settimeout�DEFAULT_SOCKET_OPTION�
setsockoptr�errorrD�	remote_ip�errno�ECONNREFUSED�WSAECONNREFUSED�EINTRrH)
rJrFr�err�addrinfo�family�socktype�protor@�opts�addressr\�eConnRefusedrrrrE�sJ
�

��rEc
Csn|�dd�}|s�t�|�dtj��}|�dtj�tjkr@|�dd�}|�dd�}|s,|r4|j||d�nt|d�r@|�tjj	�|�dd�rW|�
|d|�d	d�|�d
d��|�dtj�tjkro|�dd�sod|_tj|_n|�dd
�|_|�dtj
�|_d|vr�|�|d�d|vr�|d\}}}	|�
|||	�d|vr�|�|d�|j||�dd
�|�dd
�|d�S)N�context�ssl_version�	cert_reqs�ca_certs�ca_cert_path)�cafile�capath�load_default_certs�certfile�keyfiler-�check_hostnameFT�ciphers�
cert_chain�
ecdh_curve�do_handshake_on_connect�suppress_ragged_eofs)rxry�server_hostname)r �ssl�
SSLContext�PROTOCOL_TLS_CLIENT�	CERT_NONE�load_verify_locations�hasattrrq�Purpose�SERVER_AUTH�load_cert_chainrt�verify_mode�
CERT_REQUIRED�set_ciphers�set_ecdh_curve�wrap_socket)
r@r9r<rtrjrorprrrsr-rrr�_wrap_sni_socket�sD


� 	


�r�cCs�ttjd�}|�|�tj�d�}|r&tj�|�r&|�dd�dur&||d<n|r:tj�	|�r:|�dd�dur:||d<|�dd�rD|d}|�dd�}t
||||�}|S)N)rl�WEBSOCKET_CLIENT_CA_BUNDLErmrnrzrtT)�dictr{r��update�os�environr �path�isfile�isdirr�)r@�user_ssloptr<r9�certPathrtrrrr8s

r8c
Cs�td�d||f}|d||f7}|r<|dr<|d}|dr(|d|d7}t|��������dd�}|d	|7}|d
7}td|�t||�z	t|�\}}}	Wnt	ye}
zt
t|
���d}
~
ww|dkrpt
d
|��|S)NzConnecting proxy...zCONNECT %s:%d HTTP/1.1
z
Host: %s:%d
rrrB�
�zProxy-Authorization: Basic %s
z
zrequest header��z#failed CONNECT via proxy status: %r)�debug�base64encode�encode�strip�decode�replace�dump�sendr�	Exception�WebSocketProxyExceptionrD)r@r*r+r#�connect_header�auth_str�encoded_str�status�resp_headers�status_messagerVrrrrGs.

���rGc	Cs�d}d}i}td�	t|�}|�d���}|snTt|�|s6|�dd�}t|d�}t|�dkr5|d}n6|�dd�}t|�dkrh|\}}|��dkr_|�d�r_|�d�d	|��|d<n
|��||��<nt	d
��qtd�|||fS)Nz--- response header ---Tzutf-8� �rrBz
set-cookiez; zInvalid headerz-----------------------)
�trace�	recv_liner�r��splitr6�len�lowerr r1)	r@r�r��headers�line�status_info�kv�key�valuerrrr4s4��
r)!�__doc__r^r�rI�sys�_exceptions�_logging�_socket�_ssl_compat�_url�base64rr��__all__�python_socks.syncr�python_socks._errors�python_socks._typesr	r0r�rrrrrArrCrEr�r8rGrrrrr�<module>s>&%+-