Sindbad~EG File Manager
3
�Pf�2�@s�ddlmZddlZddlZddlZddlZddlZddlmZm Z
ddlZddlm
Z
ddlmZddlmZyddlZejZWn,eefk
r�dZGdd �d e�ZYnXyeZWn$ek
r�Gd
d�de�ZYnXddlmZmZmZmZdd
l m!Z!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'm(Z(ddl)m*Z*ddl+m,Z,ej-e.�Z/ddd�Z0ej1ddd�Z2Gdd�de3�Z4Gdd�dee3�ZGdd�de�Z5Gdd�de5�Z6dd�Z7e�r�e5Z8e6Z5ne4Z5dS)�)�absolute_importN)�error�timeout�)�six)�HTTPConnection)�
HTTPExceptionc@seZdZdS)�BaseSSLErrorN)�__name__�
__module__�__qualname__�r
r
� /usr/lib/python3.6/connection.pyr sr c@seZdZdS)�ConnectionErrorN)r
rrr
r
r
rrsr)�NewConnectionError�ConnectTimeoutError�SubjectAltNameWarning�SystemTimeWarning)�match_hostname�CertificateError)�resolve_cert_reqs�resolve_ssl_version�assert_fingerprint�create_urllib3_context�ssl_wrap_socket)�
connection)�HTTPHeaderDict�Pi�)�http�httpsi�c@seZdZdZdS)�DummyConnectionz-Used to detect a failed ConnectionCls import.N)r
rr�__doc__r
r
r
rr Asr c@sVeZdZdZedZejejdfgZ dZ
dd�Zdd�Zd d
�Z
dd�Zddd�Zd
S)ra{
Based on httplib.HTTPConnection but provides an extra constructor
backwards-compatibility layer between older and newer Pythons.
Additional keyword parameters are used to configure attributes of the connection.
Accepted parameters include:
- ``strict``: See the documentation on :class:`urllib3.connectionpool.HTTPConnectionPool`
- ``source_address``: Set the source address for the current connection.
.. note:: This is ignored for Python 2.6. It is only applied for 2.7 and 3.x
- ``socket_options``: Set specific options on the underlying socket. If not specified, then
defaults are loaded from ``HTTPConnection.default_socket_options`` which includes disabling
Nagle's algorithm (sets TCP_NODELAY to 1) unless the connection is behind a proxy.
For example, if you wish to enable TCP Keep Alive in addition to the defaults,
you might pass::
HTTPConnection.default_socket_options + [
(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
]
Or you may want to disable the defaults by passing an empty list (e.g., ``[]``).
rrFcOsZtjr|jdd�|jd�|_tjdkr4|jdd�|jd|j�|_t j
|f|�|�dS)N�strict�source_address���socket_options)r$r%)rZPY3�pop�getr#�sys�version_info�default_socket_optionsr&�_HTTPConnection�__init__)�self�args�kwr
r
rr-js
zHTTPConnection.__init__cCs�i}|jr|j|d<|jr$|j|d<ytj|j|jf|jf|�}Wnftk
rz}zt|d|j|jf��WYdd}~Xn0t k
r�}zt
|d|��WYdd}~XnX|S)zp Establish a socket connection and set nodelay settings on it.
:return: New socket connection.
r#r&z0Connection to %s timed out. (connect timeout=%s)Nz(Failed to establish a new connection: %s)r#r&rZcreate_connection�host�portr�
SocketTimeoutr�SocketErrorr)r.Zextra_kw�conn�er
r
r� _new_conns
zHTTPConnection._new_conncCs$||_t|dd�r |j�d|_dS)N�_tunnel_hostr)�sock�getattr�_tunnel� auto_open)r.r5r
r
r�
_prepare_conn�szHTTPConnection._prepare_conncCs|j�}|j|�dS)N)r7r=)r.r5r
r
r�connect�szHTTPConnection.connectNcCst|dk r|ni�}d|k}d|k}|j||||d�x |j�D]\}}|j||�q@Wd|krl|jdd�|j�|dk �rtjtjf} t|| �r�|f}xj|D]b}
|
s�q�t|
tj�s�|
j d�}
t
t|
��d d�}|j|j d
��|jd�|j|
�|jd�q�W|jd�dS)
z�
Alternative to the common request method, which sends the
body with chunked encoding and not as one block
Nzaccept-encodingr1)�skip_accept_encoding� skip_hostztransfer-encodingzTransfer-EncodingZchunked�utf8r$zutf-8s
s0
)
rZ
putrequest�itemsZ putheaderZ
endheadersrZstring_typesZbinary_type�
isinstance�encode�hex�len�send)r.�methodZurlZbodyZheadersr?r@�header�valueZstringish_types�chunkZlen_strr
r
r�request_chunked�s8
zHTTPConnection.request_chunked)NN)r
rrr!�port_by_scheme�default_port�socketZIPPROTO_TCPZTCP_NODELAYr+�is_verifiedr-r7r=r>rLr
r
r
rrFsrc@s8eZdZedZdZddddejdfdd�Zdd�Z dS)�HTTPSConnectionrNc Ks8tj|||f||d�|��||_||_||_d|_dS)N)r"rr)rr-�key_file� cert_file�ssl_contextZ _protocol) r.r1r2rRrSr"rrTr0r
r
rr-�szHTTPSConnection.__init__cCsN|j�}|j|�|jdkr2ttd�td�d�|_t||j|j|jd�|_ dS)N)�ssl_version� cert_reqs)r9�keyfile�certfilerT)
r7r=rTrrrrrRrSr9)r.r5r
r
rr>�s
zHTTPSConnection.connect)
r
rrrMrNrUrOZ_GLOBAL_DEFAULT_TIMEOUTr-r>r
r
r
rrQ�s
rQc@s6eZdZdZdZdZdZdZdZddd�Z dd�Z
dS)�VerifiedHTTPSConnectionz[
Based on httplib.HTTPSConnection but wraps the socket with
SSL certification.
NcCsn|dkr(|s|rd}n|jdk r(|jj}||_||_||_||_||_|oTtjj |�|_
|oftjj |�|_dS)zX
This method should only be called once, before the connection is used.
N�
CERT_REQUIRED)rT�verify_moderRrSrV�assert_hostnamer�os�path�
expanduser�ca_certs�ca_cert_dir)r.rRrSrVr`r\rrar
r
r�set_certs
z VerifiedHTTPSConnection.set_certc CsL|j�}|j}t|dd�r4||_|j�d|_|j}tjj �t
k}|rXtjdj
t
�t�|jdkr|tt|j�t|j�d�|_|j}t|j�|_t||j|j|j|j||d�|_|jr�t|jjdd�|j�nb|jtjko�t|dd �o�|jd k �r.|jj�}|j d
f��stjdj
|�t!�t"||j�p*|�|jtj#k�pD|jdk |_$dS)Nr8rzWSystem time is way off (before {0}). This will probably lead to SSL verification errors)rUrV)r9rWrXr`raZserver_hostnamerTT)Zbinary_formZcheck_hostnameFZsubjectAltNamez�Certificate for {0} has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 for details.))%r7r1r:r9r;r<r8�datetime�dateZtoday�RECENT_DATE�warnings�warn�formatrrTrrrUrrVr[rrRrSr`rarZgetpeercert�sslZ CERT_NONEr\r(r�_match_hostnamerZrP)r.r5ZhostnameZis_time_off�context�certr
r
rr>sT
zVerifiedHTTPSConnection.connect)NNNNNNN)r
rrr!rVr`rarUrrbr>r
r
r
rrY�s
rYcCsLyt||�Wn8tk
rF}ztjd||�||_�WYdd}~XnXdS)Nz@Certificate did not match expected hostname: %s. Certificate: %s)rr�logrZ
_peer_cert)rlZasserted_hostnamer6r
r
rrjbsrj)9Z
__future__rrcZloggingr]r)rOrr4rr3rfZpackagesrZpackages.six.moves.http_clientrr,rriZSSLErrorr �ImportError�AttributeError�
BaseExceptionr� NameError� Exception�
exceptionsrrrrZpackages.ssl_match_hostnamerrZ util.ssl_rrrrr�utilr�_collectionsrZ getLoggerr
rmrMrdre�objectr rQrYrjZUnverifiedHTTPSConnectionr
r
r
r�<module>sN
&l
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists