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: //home/arjun/projects/env/lib/python3.10/site-packages/gunicorn/__pycache__/sock.cpython-310.pyc
o

%we��@s�ddlZddlZddlZddlZddlZddlZddlZddlmZGdd�de	�Z
Gdd�de
�ZGdd�de�ZGd	d
�d
e
�Z
dd�Zdd
d�Zddd�Zdd�Zdd�ZdS)�N)�utilc@s@eZdZddd�Zdd�Zdd�Zdd	d
�Zdd�Zd
d�ZdS)�
BaseSocketNcCsd||_||_||_|durt�|jtj�}d}nt�||jtj�}t�|�d}|j	||d�|_
dS)NFT��bound)�log�conf�cfg_addr�socket�FAMILY�SOCK_STREAM�fromfd�os�close�set_options�sock)�self�addressrr�fdrr�r�F/home/arjun/projects/env/lib/python3.10/site-packages/gunicorn/sock.py�__init__s
zBaseSocket.__init__cCsd|j��S)Nz<socket %d>)r�fileno�rrrr�__str__"szBaseSocket.__str__cCst|j|�S�N)�getattrr)r�namerrr�__getattr__%szBaseSocket.__getattr__Fc
Cs�|�tjtjd�|jjr;ttd�r;z|�tjtjd�Wntjy:}z|j	t	j
t	jfvr0�WYd}~nd}~ww|sB|�|�|�
d�t|d�rQ|�d�|�|jj�|S)N��SO_REUSEPORTr�set_inheritableT)�
setsockoptr	�
SOL_SOCKET�SO_REUSEADDRr�
reuse_port�hasattrr�error�errno�ENOPROTOOPT�EINVAL�bind�setblockingr �listen�backlog)rrr�errrrrr(s&����



zBaseSocket.set_optionscCs|�|j�dSr)r*r)rrrrrr*<szBaseSocket.bindc
Cs`|jdurdSz|j��Wntjy*}z|j�dt|��WYd}~nd}~wwd|_dS)NzError while closing socket %s)rrr	r&r�info�str)r�errrr?s
��
zBaseSocket.closer�F)	�__name__�
__module__�__qualname__rrrrr*rrrrrrs

rcs,eZdZejZdd�Zd�fdd�	Z�ZS)�	TCPSocketcCs2|jjrd}nd}|j��}d||d|dfS)N�https�httpz
%s://%s:%drr)r�is_sslr�getsockname)r�scheme�addrrrrrOs

zTCPSocket.__str__Fcs"|�tjtjd�t�j||d�S)Nrr)r!r	�IPPROTO_TCP�TCP_NODELAY�superr)rrr��	__class__rrrXszTCPSocket.set_optionsr2)	r3r4r5r	�AF_INETr
rr�
__classcell__rrr@rr6Ks	r6c@seZdZejZdd�ZdS)�
TCP6SocketcCs|j��\}}}}d||fS)Nzhttp://[%s]:%d)rr:)r�host�port�_rrrraszTCP6Socket.__str__N)r3r4r5r	�AF_INET6r
rrrrrrD]srDcs4eZdZejZd�fdd�	Zdd�Zdd�Z�Z	S)	�
UnixSocketNc
s�|dur9zt�|�}Wnty&}z|jdtjkr�WYd}~nd}~wwt�|j�r3t�|�nt	d|��t
�j||||d�dS)Nrz%r is not a socket�r)r
�stat�OSError�argsr'�ENOENT�S_ISSOCK�st_mode�remove�
ValueErrorr?r)rr<rrr�str1r@rrrjs���zUnixSocket.__init__cCs
d|jS)Nzunix:%s)rrrrrrxs
zUnixSocket.__str__cCs@t�|jj�}|�|j�t�|j|jj|jj�t�|�dSr)	r
�umaskrr*rr�chown�uid�gid)rr�	old_umaskrrrr*{szUnixSocket.bindr)
r3r4r5r	�AF_UNIXr
rrr*rCrrr@rrIfs
rIcCsJt|t�rt�|d�rt}|St}|St|ttf�rt}|St	d|��)Nrz Unable to create socket from: %r)
�
isinstance�tupler�is_ipv6rDr6r0�bytesrI�	TypeError)r<�	sock_typerrr�
_sock_type�s
���r`cCs�g}|j}dd�|D�}|r|t|�7}dd�|D�}|jr,tj�|j�s,td|j��|jr=tj�|j�s=td|j��|rd|D] }t�	|tj
tj�}|��}	t
|	�}
|
|	|||d�}|�|�qA|S|D]}t
|�}
d}td�D]\}z|
|||�}WnQtjy�}
zD|
jd	tjkr�|�d
t|��|
jd	tjkr�|�dt|��|dkr�d}|�|jt|�t|
�d
��|�d�t�d�WYd}
~
qrd}
~
ww|dur�|�dt|��t�d�|�|�qf|S)z�
    Create a new socket for the configured addresses or file descriptors.

    If a configured address is a tuple then a TCP socket is created.
    If it is a string, a Unix socket is created. Otherwise, a TypeError is
    raised.
    cSsg|]	}t|t�r|�qSr�rZ�int��.0r*rrr�
<listcomp>��z"create_sockets.<locals>.<listcomp>cSsg|]	}t|t�s|�qSrrarcrrrre�rfzcertfile "%s" does not existzkeyfile "%s" does not existrJN�rzConnection in use: %szInvalid address: %sz$connection to {addr} failed: {error})r<r&zRetrying in 1 second.rzCan't connect to %s)r�list�certfiler
�path�existsrR�keyfiler	rrYrr:r`�append�ranger&rMr'�
EADDRINUSEr0�
EADDRNOTAVAIL�debug�format�time�sleep�sys�exit)rr�fds�	listenersr<�fdaddr�laddrrr�	sock_namer_�listener�ir1�msgrrr�create_sockets�sT

��
rTcCs8|D]}|��}|��|rt|�turt�|�qdSr)r:rr`rIr
�unlink)rxr�rr{rrr�
close_sockets�s
��r�cs�fdd�}���|�S)NcsDtjtjj�jd�}|j�j�jd��j|_	�j
r |��j
�|S)N)�cafile)rirl)�ssl�create_default_context�Purpose�CLIENT_AUTH�ca_certs�load_cert_chainrirl�	cert_reqs�verify_mode�ciphers�set_ciphers)�context�rrr�default_ssl_context_factory�sz0ssl_context.<locals>.default_ssl_context_factory)�ssl_context)rr�rr�rr��sr�cCst|�j|d|j|jd�S)NT)�server_side�suppress_ragged_eofs�do_handshake_on_connect)r��wrap_socketr�r�)rrrrr�ssl_wrap_socket�s

�r�r)T)r'r
r	r�rKrurs�gunicornr�objectrr6rDrIr`rr�r�r�rrrr�<module>s":	

A