Your IP : 216.73.216.60


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/pycares/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/pycares/__pycache__/__init__.cpython-35.pyc



*kz\.`�@s�ddlmZmZddlZejejej�krIe	d��ddl
mZddlm
Z
mZmZddlmZddlZddlZddlZddlZddlZdd	d
ddd
ddddddddddddddddddgZx$eD]Zeee�e�e<qWd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5iZx0ej�D]"\ZZeee�e�e<q�Weej ej!ej"���e�d6<d7Z#Gd8d9�d9e$�Z%e&�Z'ej(d:�d;d<��Z)ej(d=�d>d?��Z*ej(d@�dAdB��Z+ej(dC�dDdE��Z,dFdG�Z-GdHdI�dI�Z.GdJdK�dK�Z/GdLdM�dMe/�Z0GdNdO�dOe/�Z1GdPdQ�dQe/�Z2GdRdS�dSe/�Z3GdTdU�dUe/�Z4GdVdW�dWe/�Z5GdXdY�dYe/�Z6GdZd[�d[e/�Z7Gd\d]�d]e/�Z8Gd^d_�d_e/�Z9Gd`da�dae/�Z:Gdbdc�dce/�Z;ee<ej=��d9dIdddegZ>[[dS)f�)�ffi�lib�NzCould not initialize c-ares)�errno)�ascii_bytes�	maybe_str�
parse_name)�__version__ZARES_FLAG_USEVCZARES_FLAG_PRIMARYZARES_FLAG_IGNTCZARES_FLAG_NORECURSEZARES_FLAG_STAYOPENZARES_FLAG_NOSEARCHZARES_FLAG_NOALIASESZARES_FLAG_NOCHECKRESPZARES_NI_NOFQDNZARES_NI_NUMERICHOSTZARES_NI_NAMEREQDZARES_NI_NUMERICSERVZ
ARES_NI_DGRAMZARES_NI_TCPZARES_NI_UDPZARES_NI_SCTPZARES_NI_DCCPZARES_NI_NUMERICSCOPEZARES_NI_LOOKUPHOSTZARES_NI_LOOKUPSERVICEZARES_NI_IDNZARES_NI_IDN_ALLOW_UNASSIGNEDZ ARES_NI_IDN_USE_STD3_ASCII_RULESZARES_SOCKET_BADZQUERY_TYPE_A�T_AZQUERY_TYPE_AAAA�T_AAAAZQUERY_TYPE_ANY�T_ANYZQUERY_TYPE_CNAME�T_CNAMEZ
QUERY_TYPE_MX�T_MXZQUERY_TYPE_NAPTR�T_NAPTRZ
QUERY_TYPE_NS�T_NSZQUERY_TYPE_PTR�T_PTRZQUERY_TYPE_SOA�T_SOAZQUERY_TYPE_SRV�T_SRVZQUERY_TYPE_TXT�T_TXTZARES_VERSION�c@seZdZdS)�	AresErrorN)�__name__�
__module__�__qualname__�rr�C/opt/alt/python35/lib64/python3.5/site-packages/pycares/__init__.pyrPsrzGvoid (void *data, ares_socket_t socket_fd, int readable, int writable )cCs#tj|�}||||�dS)N)�_ffi�from_handle)�dataZ	socket_fd�readable�writable�
sock_state_cbrrr�_sock_state_cbXsr"zCvoid (void *arg, int status, int timeouts, struct hostent *hostent)cCsWtj|�}tj|�|tjkr4d}nt|�}d}|||�dS)N)rr�_global_set�discard�_lib�ARES_SUCCESS�ares_host_result)�arg�status�timeouts�hostent�callback�resultrrr�_host_cb]s
	r.zEvoid (void *arg, int status, int timeouts, char *node, char *service)cCsZtj|�}tj|�|tjkr4d}nt||�}d}|||�dS)N)rrr#r$r%r&�ares_nameinfo_result)r(r)r*�node�servicer,r-rrr�_nameinfo_cbjs
	r2zIvoid (void *arg, int status, int timeouts, unsigned char *abuf, int alen)c

CsFtj|�\}}tj|�|tjkr/|tjkrg}x�tjtjtj	tj
tjtjtj
tjtjtjf
D]~}t|||�\}	}|dtjtjfkr�d}P|	dk	r�t|	tjj�r�|j|	�q�|j|	�q�Wd}q5t|||�\}}nd}|||�dS)N)rrr#r$r%r&rr
rr
rrrrrrr�parse_resultZARES_ENODATAZ
ARES_EBADRESP�
isinstance�collections�abc�Iterable�extend�append)
r(r)r*�abuf�alenr,�
query_typer-Zqtype�rrrr�	_query_cbws$
I	r>cs#|tjkr�tjdt��tjdt�}tj||tj�|�}|tjkrod}|}q�fdd�t|d�D�}d}n~|tj	kr6tjdt��tjdt�}tj
||tj�|�}|tjkr
d}|}q�fdd�t|d�D�}d}n�|tjkr�tjd�}tj|||tjtj�}|tjkr�d}|}qt|d�}tj
|d�d}n\|tjkrjtjd	�}tj|||�}|tjkrd}|}qg}|d}	x/|	tjkrO|jt|	��|	j}	q!Wtj|d�d}n�|tjkrtjd
�}
tj|||
�}|tjkr�d}|}qg}|
d}x/|tjkr�|jt|��|j}q�Wtj|
d�d}n|tjkr�tjd�}tj|||�}|tjkrhd}|}qg}|d}d}
x>|j|
tjkr�|jt|j|
��|
d7}
q�Wtj
|�d}nD|tjkr�tjd�}tjdt�}tj||tjdtj||�}|tjkrJd}|}qg}|d}d}
xG|j|
tjkr�|jttj |j|
���|
d7}
qcWt!||d|�}tj
|�d}nC|tj"krQtjd�}tj#|||�}|tjkr'd}|}qt$|d�}tj|d�d}n�|tj%kr�tjd
�}tj&|||�}|tjkr�d}|}qg}|d}x/|tjkr�|jt'|��|j}q�Wtj|d�d}n|tj(kr
tjd�}tj)|||�}|tjkrOd}|}qg}|d}d}x�|tjkr�|dk	r�|j|�P|j*dkr�|dk	r�|j|�t+|�}nt+|�}|j,|j,7_,|j}qhWtj|d�d}nt-d��||fS)Nzstruct ares_addrttl[]zint*cs g|]}t�|��qSr)�ares_query_a_result)�.0�i)�addrttlsrr�
<listcomp>�s	z parse_result.<locals>.<listcomp>rzstruct ares_addr6ttl[]cs g|]}t�|��qSr)�ares_query_aaaa_result)r@rA)rBrrrC�s	zstruct hostent **zstruct ares_mx_reply **zstruct ares_naptr_reply **rzstruct ares_soa_reply **zstruct ares_srv_reply **zstruct ares_txt_ext **zinvalid query type specified).r%r
r�new�PYCARES_ADDRTTL_SIZEZares_parse_a_reply�NULLr&�rangerZares_parse_aaaa_replyr
�ares_query_cname_resultZares_free_hostentrZares_parse_mx_replyr9�ares_query_mx_result�nextZares_free_datarZares_parse_naptr_reply�ares_query_naptr_resultrZares_parse_ns_reply�	h_aliases�ares_query_ns_resultrZares_parse_ptr_reply�socket�	AF_UNSPECr�string�ares_query_ptr_resultrZares_parse_soa_reply�ares_query_soa_resultrZares_parse_srv_reply�ares_query_srv_resultrZares_parse_txt_reply_extZrecord_start�ares_query_txt_result�text�
ValueError)r<r:r;Z	naddrttlsZparse_statusr-r)�hostZmx_replyZmx_reply_ptrZnaptr_replyZnaptr_reply_ptrr+rAZhostttl�aliasesZ	soa_replyZ	srv_replyZ
srv_reply_ptrZ	txt_replyZ
txt_reply_ptrZtmp_objZ	new_chunkr)rBrr3�s	#		#	!			

		

		

	'	
#
				

		



	r3c@sNeZdZejejejejejej	ej
ejejej
ejfZdddddddddddddddddd�Zdd�Zedd��Zejd	d��Zd
d�Zdd
�Zddd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �ChannelNFcCstjd�}tjd�}d}|dk	rF||_|tjB}|dk	rrt|d�|_|tjB}|dk	r�||_|tj	B}|dk	r�||_
|tjB}|dk	r�||_|tj
B}|dk	r�||_|tjB}|dk	r||_|tjB}|dk	r>||_|tjB}|
r�t|
�s\td��tj|
�}||_t|_||_|tjB}|	r�|	|_|tjB}|r5dd�|D�}tjdt|�d	�}x(tt|��D]}||||<q�W||_ t|�|_!|tj"B}|
rH|tj#B}|dk	r||tj$B}tjd
t%|��|_&tj'|||�}|tj(kr�t)d��tj*|dd
��|_+|r�||_,|r�|j-|�|r�|j.|�dS)Nzares_channel *zstruct ares_options *ri�zsock_state_cb is not callablecSs(g|]}tjdt|���qS)zchar[])rrEr)r@rArrrrCos	z$Channel.__init__.<locals>.<listcomp>z
char *[%d]rzchar[]z#Failed to initialize c-ares channelcSstj|d�S)Nr)r%Zares_destroy)�xrrr�<lambda>�sz"Channel.__init__.<locals>.<lambda>)/rrE�flagsr%ZARES_OPT_FLAGS�int�timeoutZARES_OPT_TIMEOUTMS�triesZARES_OPT_TRIES�ndotsZARES_OPT_NDOTS�tcp_portZARES_OPT_TCP_PORT�udp_portZARES_OPT_UDP_PORT�socket_send_buffer_sizeZARES_OPT_SOCK_SNDBUF�socket_receive_buffer_sizeZARES_OPT_SOCK_RCVBUF�callable�	TypeError�
new_handleZ_sock_state_cb_handler"r!Zsock_state_cb_dataZARES_OPT_SOCK_STATE_CB�lookupsZARES_OPT_LOOKUPS�lenrH�domainsZndomainsZARES_OPT_DOMAINSZARES_OPT_ROTATEZARES_OPT_RESOLVCONFr�resolvconf_pathZares_init_optionsr&r�gc�_channel�servers�set_local_ip�
set_local_dev)�selfr]r_r`rarbrcrorkrir!rdre�rotateZlocal_ipZ	local_devrlZchannel�optionsZoptmask�userdata�strs�crAr=rrr�__init__'sz	

	
	
	
	
	
	
			
	
	


	
zChannel.__init__cCstj|jd�dS)Nr)r%Zares_cancelrn)rrrrr�cancel�szChannel.cancelcCstjd�}tj|jd|�}|tjkrOt|tj|���g}tjd|d�}x�|tj	kr~Ptjdtj
�}|d}tj	tj|jtj
|j�|tj
�kr�|jttj|tj
���|j}qnW|S)Nzstruct ares_addr_node **rzchar [])rrEr%Zares_get_serversrnr&rr�strerrorrG�INET6_ADDRSTRLEN�ares_inet_ntop�family�	addressof�addrr9rrQrK)rrror=Zserver_list�server�ip�srrrro�s
3"
zChannel.serverscCsDtjdt|��}x�t|�D]�\}}tjtjt|�tj	||j
j��dkr|tj||_nVtjtj
t|�tj	||j
j��dkr�tj
||_ntd��|dkr&tj	||�||d_q&Wtj|jd|�}|tjkr@t|tj|���dS)Nzstruct ares_addr_node[%d]rzinvalid IP addressr)rrErj�	enumerater%�ares_inet_ptonrO�AF_INETrr~r�addr4r}�AF_INET6�addr6rWrKZares_set_serversrnr&rrrz)rrrorwrAr�r=rrrro�s77"cCs�g}g}tjdtj�}tj|jd|tj�}x]ttj�D]L}tj||�rz|j||�tj	||�rQ|j||�qQW||fS)Nzares_socket_t [%d]r)
rrEr%ZARES_GETSOCK_MAXNUMZares_getsockrnrHZARES_GETSOCK_READABLEr9ZARES_GETSOCK_WRITABLE)rrZrfdsZwfdsZsocksZbitmaskrArrr�getsock�szChannel.getsockcCs6tj|jdtjd|�tjd|��dS)NrZ
ares_socket_t)r%Zares_process_fdrnr�cast)rrZread_fdZwrite_fdrrr�
process_fd�szChannel.process_fdcCs�tj}tjd�}|dk	r�|dkrytjd�}ttj|��|_ttj|d�d�|_nt	d��t
j|jd||�|tjkr�dS|j|jdS)Nzstruct timeval*gg�?i@Bz-timeout needs to be a positive number or Nonerg��.A)
rrGrEr^�math�floorZtv_sec�fmodZtv_usecrWr%Zares_timeoutrn)rr�tZmaxtv�tvrrrr_�s	"zChannel.timeoutcCs�t|�std��tjd�}tjd�}tjtjt|�|�dkrl|}tj}nBtjtj	t|�|�dkr�|}tj	}nt
d��tj|�}tj
|�tj|jd|tj|d�|t|�dS)Nza callable is requiredzstruct in_addr*zstruct ares_in6_addr*rzinvalid IP addressr)rfrgrrEr%r�rOr�rr�rWrhr#�addZares_gethostbyaddrrn�sizeofr.)rrrr,r�r��addressr}rurrr�
gethostbyaddr�s$$
zChannel.gethostbyaddrcCs^t|�std��tj|�}tj|�tj|jdt	|�|t
|�dS)Nza callable is requiredr)rfrgrrhr#r�r%Zares_gethostbynamernrr.)rr�namer}r,rurrr�
gethostbyname�s

zChannel.gethostbynamecCs|jtj|||�dS)N)�	_do_queryr%Z
ares_query)rrr�r<r,rrr�query�sz
Channel.querycCs|jtj|||�dS)N)r�r%Zares_search)rrr�r<r,rrr�search�szChannel.searchcCs�t|�std��||jkr3td��tj||f�}tj|�||jdt	|�t
j|t|�dS)Nza callable is requiredzinvalid query type specifiedr)
rfrg�
__qtypes__rWrrhr#r�rnrr%ZC_INr>)rr�funcr�r<r,rurrrr��s
zChannel._do_querycCs�tjd�}tjd�}tjtjt|�|�dkrhtj|jdtj	|j
��nJtjtjt|�|�dkr�tj|jd|�nt
d��dS)Nzstruct in_addr*zstruct ares_in6_addr*rrzinvalid IP address)rrEr%r�rOr�rZares_set_local_ip4rn�ntohlZs_addrr�Zares_set_local_ip6rW)rrr�r�r�rrrrp	s$&$zChannel.set_local_ipc
Cs|t|�std��|\}}|dks<|dkrHtd��tjd�}tjd�}tjtjt	|�tj
|j��dkr�tj|_tj
|�|_|}nctjtjt	|�tj
|j��dkrtj|_tj
|�|_|}ntd��tj|�}	tj|	�tj|jdtjd	|�tj|d�|t|	�dS)
Nza callable is requiredri��z port must be between 0 and 65535zstruct sockaddr_in*zstruct sockaddr_in6*rzinvalid IP addresszstruct sockaddr*)rfrgrWrrEr%r�rOr�rr~Zsin_addrZ
sin_family�htonsZsin_portr�Z	sin6_addrZsin6_familyZ	sin6_portrhr#r�Zares_getnameinfornr�r�r2)
rrZip_portr]r,r��portZsa4Zsa6�sarurrr�getnameinfos&0	0	
zChannel.getnameinfocCstj|jd|�dS)Nr)r%Zares_set_local_devrn)rr�devrrrrq.szChannel.set_local_dev) rrrr%r
rrr
rrrrrrrr�rxry�propertyro�setterr�r�r_r�r�r�r�r�rpr�rqrrrrrZ$s>HW

rZc@s"eZdZfZdd�ZdS)�
AresResultcs9�fdd��jD�}d�jjdj|�fS)Ncs)g|]}d|t�|�f�qS)z%s=%s)�getattr)r@�a)rrrrrC6s	z'AresResult.__repr__.<locals>.<listcomp>z<%s> %sz, )�	__slots__�	__class__r�join)rr�attrsr)rrr�__repr__5szAresResult.__repr__N)rrrr�r�rrrrr�2sr�c@s(eZdZdZdZdd�ZdS)r?rX�ttl�AcCsktjdtj�}tjtjtj|j�|tj�t	tj
|tj��|_|j|_dS)Nzchar[])
rrEr%r{r|rOr�r~ZipaddrrrQrXr�)rr�ares_addrttl�bufrrrrxAs(zares_query_a_result.__init__N)rXr�)rrrr��typerxrrrrr?=sr?c@s(eZdZdZdZdd�ZdS)rDrXr�ZAAAAcCsktjdtj�}tjtjtj|j�|tj�t	tj
|tj��|_|j|_dS)Nzchar[])
rrEr%r{r|rOr�r~Zip6addrrrQrXr�)rrr�r�rrrrxLs(zares_query_aaaa_result.__init__N)rXr�)rrrr�r�rxrrrrrDHsrDc@s(eZdZdZdZdd�ZdS)rI�cnamer�ZCNAMEcCs(ttj|j��|_d|_dS)Nr���)rrrQ�h_namer�r�)rrrXrrrrxWsz ares_query_cname_result.__init__N)r�r�)rrrr�r�rxrrrrrISsrIc@s(eZdZdZdZdd�ZdS)	rJrX�priorityr�ZMXcCs7ttj|j��|_|j|_|j|_dS)N)rrrQrXr�r�)rrZmxrrrrx`szares_query_mx_result.__init__N)rXr�r�)rrrr�r�rxrrrrrJ\srJc@s(eZdZdZdZd	d
�ZdS)
rL�order�
preferencer]r1�regex�replacementr�ZNAPTRcCs�|j|_|j|_ttj|j��|_ttj|j��|_ttj|j��|_ttj|j	��|_	|j
|_
dS)N)r�r�rrrQr]r1Zregexpr�r�r�)rrZnaptrrrrrxjsz ares_query_naptr_result.__init__N)r�r�r]r1r�r�r�)rrrr�r�rxrrrrrLfsrLc@s(eZdZdZdZdd�ZdS)rNrXr�ZNScCs%ttj|��|_d|_dS)Nrr�)rrrQrXr�)rr�nsrrrrxxszares_query_ns_result.__init__N)rXr�)rrrr�r�rxrrrrrNtsrNc@s(eZdZdZdZdd�ZdS)	rRr�r�rYZPTRcCs1ttj|j��|_||_||_dS)N)rrrQr�r�r�rY)rrr+r�rYrrrrx�s	zares_query_ptr_result.__init__N)r�r�rY)rrrr�r�rxrrrrrR}srRc@s(eZdZd
Zd	Zd
d�ZdS)rS�nsname�
hostmaster�serial�refresh�retry�expires�minttlr�ZSOAcCs�ttj|j��|_ttj|j��|_|j|_|j|_|j|_|j|_	|j
|_
|j|_dS)N)rrrQr�r�r�r�r�Zexpirer�r�r�)rrZsoarrrrx�szares_query_soa_result.__init__N)r�r�r�r�r�r�r�r�)rrrr�r�rxrrrrrS�srSc@s(eZdZd
ZdZdd�Zd	S)rTrXr�r��weightr�ZSRVcCsOttj|j��|_|j|_|j|_|j|_|j|_dS)N)rrrQrXr�r�r�r�)rrZsrvrrrrx�s
zares_query_srv_result.__init__N)rXr�r�r�r�)rrrr�r�rxrrrrrT�srTc@s(eZdZdZdZdd�ZdS)rUrVr�ZTXTcCs+ttj|j��|_|j|_dS)N)rrrQ�txtrVr�)rrr�rrrrx�szares_query_txt_result.__init__N)rVr�)rrrr�r�rxrrrrrU�srUc@s"eZdZdZdd�ZdS)r'r�rY�	addressescCsttj|j��|_g|_g|_d}xJ|j|tjkr|jj	ttj|j|���|d7}q6Wd}x�|j
|tjkrtjdtj
�}tjtj|j|j
||tj
�kr|jj	ttj|tj
���|d7}q�WdS)Nrrzchar[])rrrQr�r�rYr�rMrGr9Zh_addr_listrEr%r{r|Z
h_addrtype)rrr+rAr�rrrrx�s		&.%zares_host_result.__init__N)r�rYr�)rrrr�rxrrrrr'�sr'c@s"eZdZdZdd�ZdS)r/r0r1cCsIttj|��|_|tjkr<ttj|��nd|_dS)N)rrrQr0rGr1)rrr0r1rrrrx�szares_nameinfo_result.__init__N)r0r1)rrrr�rxrrrrr/�sr/rr	)?�_caresrrrr%�
_cffi_backendr&Zares_library_initZARES_LIB_INIT_ALL�RuntimeError�r�utilsrrr�_versionr	�collections.abcr5rOr��	functools�sysZexported_pycares_symbols�symbolr��globalsZexported_pycares_symbols_map�items�k�vrQZares_versionrGrF�	Exceptionr�setr#r,r"r.r2r>r3rZr�r?rDrIrJrLrNrRrSrTrUr'r/�list�keys�__all__rrrr�<module>s�	
(	

��	
	
&