U ma:t@sddlmZmZddlZejeejkr2e dddl m Z ddl m Z mZmZddlmZddlZddlZddlZddlZddlZdd d d d d ddddddddddddddddddgZeD]Zeeeee<qd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1ZeD]\ZZeeeee<qee e!ej"ed2<d3Z#Gd4d5d5e$Z%e&Z'e(d6d7Z)e(d8d9Z*e(d:d;Z+e(dd?Z-d@dAZ.GdBdCdCZ/GdDdEdEZ0GdFdGdGe0Z1GdHdIdIe0Z2GdJdKdKe0Z3GdLdMdMe0Z4GdNdOdOe0Z5GdPdQdQe0Z6GdRdSdSe0Z7GdTdUdUe0Z8GdVdWdWe0Z9GdXdYdYe0Z:GdZd[d[e0Z;Gd\d]d]e0ZGdbdcdce0Z?Gdddedee0Z@Gdfdgdge0ZAeeBeCd5dCdhdigZD[[dS)j)ffilibNzCould 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_DGRAMZ ARES_NI_TCPZ ARES_NI_UDPZ ARES_NI_SCTPZ ARES_NI_DCCPZARES_NI_NUMERICSCOPEZARES_NI_LOOKUPHOSTZARES_NI_LOOKUPSERVICEZ ARES_NI_IDNZARES_NI_IDN_ALLOW_UNASSIGNEDZ ARES_NI_IDN_USE_STD3_ASCII_RULESZARES_SOCKET_BADT_AT_AAAAT_ANYT_CAAT_CNAMET_MXT_NAPTRT_NST_PTRT_SOAT_SRVT_TXTC_INC_CHAOSC_HSC_NONEC_ANY)Z QUERY_TYPE_AZQUERY_TYPE_AAAAZQUERY_TYPE_ANYZQUERY_TYPE_CAAZQUERY_TYPE_CNAMEZ QUERY_TYPE_MXZQUERY_TYPE_NAPTRZ QUERY_TYPE_NSZQUERY_TYPE_PTRZQUERY_TYPE_SOAZQUERY_TYPE_SRVZQUERY_TYPE_TXTZQUERY_CLASS_INZQUERY_CLASS_CHAOSZQUERY_CLASS_HSZQUERY_CLASS_NONEZQUERY_CLASS_ANYZ ARES_VERSIONc@s eZdZdS) AresErrorN)__name__ __module__ __qualname__r r C/opt/alt/python38/lib64/python3.8/site-packages/pycares/__init__.pyrXsrcCst|}||||dSN)_ffi from_handle)dataZ socket_fdreadablewritable sock_state_cbr r r!_sock_state_cb`s r)cCs>t|}t||tjkr$d}n t|}d}|||dSr")r#r$ _global_setdiscard_lib ARES_SUCCESSares_host_result)argstatustimeoutshostentcallbackresultr r r!_host_cbes   r5cCs@t|}t||tjkr$d}nt||}d}|||dSr")r#r$r*r+r,r-ares_nameinfo_result)r/r0r1nodeservicer3r4r r r! _nameinfo_cbrs    r9c Cst|\}}t||tjkr|tjkrg}tjtjtj tj tj tj tj tjtjtjtjf D]Z}t|||\} }|dtjtjfkrd}q| dk r`t| tjjr|| q`|| q`d}qt|||\}}nd}|||dSr")r#r$r*r+r,r-r r r r rrrrrrrr parse_resultZ ARES_ENODATAZ ARES_EBADRESP isinstance collectionsabcIterableextendappend) r/r0r1abufalenr3 query_typer4Zqtyperr r r! _query_cbs$   4  rEcCs>t|}t||tjkr$d}n t|}d}|||dSr")r#r$r*r+r,r-ares_addrinfo_result)r/r0r1resr3r4r r r! _addrinfo_cbs   rHcs|tjkrltdttdt}t||tj|}|tjkrJd}|}nfddt|dD}d}n>|tj krtdttdt}t ||tj|}|tjkrd}|}nfddt|dD}d}n|tj krXtd}t |||}|tjkrd}|}nBg}|d}|tjkrB| t||j}qt|dd}nR|tjkrtd } t||| tjtj}|tjkrd}|}nt| d}t| dd}n|tjkr|dk r| t-|q|j.d krl|dk rb| t-|t/|}nt/|}|j0|j07_0|j}qt|dd}nt1d||fS)Nzstruct ares_addrttl[]zint*csg|]}t|qSr )ares_query_a_result.0iZaddrttlsr r! sz parse_result..rzstruct ares_addr6ttl[]csg|]}t|qSr )ares_query_aaaa_resultrJrMr r!rNszstruct ares_caa_reply **zstruct hostent **zstruct ares_mx_reply **zstruct ares_naptr_reply **rzstruct ares_soa_reply **zstruct ares_srv_reply **zstruct ares_txt_ext **invalid query type specified)2r,r r#newPYCARES_ADDRTTL_SIZEZares_parse_a_replyNULLr-ranger Zares_parse_aaaa_replyr Zares_parse_caa_replyr@ares_query_caa_resultnextZares_free_datarares_query_cname_resultZares_free_hostentrZares_parse_mx_replyares_query_mx_resultrZares_parse_naptr_replyares_query_naptr_resultrZares_parse_ns_reply h_aliasesares_query_ns_resultrZares_parse_ptr_replysocketZ AF_UNSPECrstringares_query_ptr_resultrZares_parse_soa_replyares_query_soa_resultrZares_parse_srv_replyares_query_srv_resultrZares_parse_txt_reply_extares_query_txt_resultZ record_startares_query_txt_result_chunktext ValueError)rCrArBZ naddrttlsZ parse_statusr4r0Z caa_replyZ caa_reply_ptrhostZmx_replyZ mx_reply_ptrZ naptr_replyZnaptr_reply_ptrr2rLaliasesZ soa_replyZ srv_replyZ srv_reply_ptrZ txt_replyZ txt_reply_ptrZtmp_objZ new_chunkr rMr!r:s                                                        r:c@seZdZejejejejejej ej ej ej ej ejejf ZejejejejejfZd#ddZddZeddZejd dZd d Zd d Zd$ddZddZddZ d%ddZ!d&ddZ"d'ddZ#d(ddZ$ddZ%dd Z&d!d"Z'dS))ChannelNFcCs>td}td}d}|dk r0||_|tjB}|dk rPt|d|_|tjB}|dk rh||_|tj B}|dk r||_ |tj B}|dk r||_ |tj B}|dk r||_|tjB}| dk r| |_|tjB}| dk r| |_|tjB}| rt| stdt| }||_tj|_||_|tjB}| r@tdt| |_|tjB}|rdd|D}td t|d }t t|D]}||||<qv||_!t||_"|tj#B}| r|tj$B}|dk r|tj%B}tdt||_&t'|||}|tj(krt)d t*|d d |_+|r||_,|r*|-||r:|.|dS)Nzares_channel *zstruct ares_options *rizsock_state_cb is not callablechar[]cSsg|]}tdt|qS)rh)r#rQrrJr r r!rNsz$Channel.__init__..z char *[%d]rz#Failed to initialize c-ares channelcSst|dSNr)r,Z ares_destroy)xr r r!z"Channel.__init__..)/r#rQflagsr,ZARES_OPT_FLAGSinttimeoutZARES_OPT_TIMEOUTMStriesZARES_OPT_TRIESndotsZARES_OPT_NDOTStcp_portZARES_OPT_TCP_PORTudp_portZARES_OPT_UDP_PORTsocket_send_buffer_sizeZARES_OPT_SOCK_SNDBUFsocket_receive_buffer_sizeZARES_OPT_SOCK_RCVBUFcallable TypeError new_handleZ_sock_state_cb_handler)r(Zsock_state_cb_dataZARES_OPT_SOCK_STATE_CBrlookupsZARES_OPT_LOOKUPSlenrTdomainsZndomainsZARES_OPT_DOMAINSZARES_OPT_ROTATEZARES_OPT_RESOLVCONFresolvconf_pathZares_init_optionsr-rZgc_channelservers set_local_ip set_local_dev)selfrmrorprqrrrsr~r{ryr(rtrurotateZlocal_ipZ local_devr|ZchannelZoptionsZoptmaskuserdataZstrscrLrDr r r!__init__Jsz                    zChannel.__init__cCst|jddSri)r,Z ares_cancelr}rr r r!cancelszChannel.cancelcCstd}t|jd|}|tjkr6t|t|g}td|d}|tj krVqtdtj }|d}tj t |j t |j|tj kr|tt|tj |j}qJ|S)Nzstruct ares_addr_node **rchar [])r#rQr,Zares_get_serversr}r-rrstrerrorrSINET6_ADDRSTRLENares_inet_ntopfamily addressofaddrr@rr]rV)rr~rDZ server_listserveripsr r r!r~s   "zChannel.serversc Cstdt|}t|D]\}}ttjt|t ||j j dkrVtj||_ n.z<%s> %sz, ) __slots__ __class__rjoin)rZattrsr rr!__repr__uszAresResult.__repr__N)rrrrrr r r r!rrsrc@seZdZdZdZddZdS)rIrettlAcCsJtdtj}ttjt|j|tjt t |tj|_ |j |_ dSNrh) r#rQr,rrr\rrZipaddrrr]rerrZ ares_addrttlbufr r r!rszares_query_a_result.__init__Nrrrrrrr r r r!rI}srIc@seZdZdZdZddZdS)rOrZAAAAcCsJtdtj}ttjt|j|tjt t |tj|_ |j |_ dSr) r#rQr,rrr\rrZip6addrrr]rerrr r r!rszares_query_aaaa_result.__init__Nrr r r r!rOsrOc@seZdZdZdZddZdS)rU)criticalrvaluerZCAAcCs>|j|_tt|j|j|_tt|j|j|_d|_dSN) rrr#r]rZplengthrZlengthr)rZcaar r r!rszares_query_caa_result.__init__Nrr r r r!rUsrUc@seZdZdZdZddZdS)rW)cnamerZCNAMEcCstt|j|_d|_dSr)rr#r]h_namerr)rrer r r!rsz ares_query_cname_result.__init__Nrr r r r!rWsrWc@seZdZdZdZddZdS)rX)repriorityrZMXcCs$tt|j|_|j|_d|_dSr)rr#r]rerr)rZmxr r r!rszares_query_mx_result.__init__Nrr r r r!rXsrXc@seZdZdZdZddZdS)rY)order preferencermr8regex replacementrZNAPTRcCsb|j|_|j|_tt|j|_tt|j|_tt|j|_tt|j |_ d|_ dSr) rrrr#r]rmr8Zregexprrr)rZnaptrr r r!rsz ares_query_naptr_result.__init__Nrr r r r!rYsrYc@seZdZdZdZddZdS)r[rZNScCstt||_d|_dSr)rr#r]rer)rnsr r r!rszares_query_ns_result.__init__Nrr r r r!r[sr[c@seZdZdZdZddZdS)r^)rrrfZPTRcCs"tt|j|_||_d|_dSr)rr#r]rrrfr)rr2rfr r r!rszares_query_ptr_result.__init__Nrr r r r!r^sr^c@seZdZdZdZddZdS)r_)nsname hostmasterserialrefreshretryexpiresminttlrZSOAcCsVtt|j|_tt|j|_|j|_|j|_|j|_|j|_ |j |_ d|_ dSr) rr#r]rrrrrZexpirerrr)rZsoar r r!rszares_query_soa_result.__init__Nrr r r r!r_sr_c@seZdZdZdZddZdS)r`)rerrweightrZSRVcCs4tt|j|_|j|_|j|_|j|_d|_dSr)rr#r]rerrrr)rZsrvr r r!rs zares_query_srv_result.__init__Nrr r r r!r`sr`c@seZdZdZdZddZdS)rarcrTXTcCst|j|_d|_dSr)rrcr)rZ txt_chunkr r r!rs zares_query_txt_result.__init__Nrr r r r!rasrac@seZdZdZdZddZdS)rbrrcCst|j|_d|_dSr)r#r]txtrcr)rrr r r!rsz$ares_query_txt_result_chunk.__init__Nrr r r r!rbsrbc@seZdZdZddZdS)r.)rrf addressescCstt|j|_g|_g|_d}|j|tjkrX|j tt|j||d7}q"d}|j |tjkrt dt j }tjt |j|j ||t j kr|j tt|t j |d7}q\dS)Nrrrh)rr#r]rrrfrrZrSr@Z h_addr_listrQr,rrZ h_addrtype)rr2rLrr r r!rs  zares_host_result.__init__Nrrrrrr r r r!r.sr.c@seZdZdZddZdS)r6)r7r8cCs2tt||_|tjkr(tt|nd|_dSr")rr#r]r7rSr8)rr7r8r r r!rszares_nameinfo_result.__init__Nrr r r r!r6sr6c@seZdZdZddZdS)ares_addrinfo_node_result)rrmrsocktypeprotocolrcCs|j|_|j|_|j|_|j|_|j}|j |j ks6t t dtj}|j tjkrtj|_t d|}t jt|jt |j|tjkrt |tjt|jf|_nt|j tjkrtj|_t d|}t jt|jt |j|tjkrt |tjt|j |j!|j"f|_nt#ddS)Nrrrzinvalid sockaddr family)$Zai_ttlrrrmrrrrZai_addrZ sa_familyrAssertionErrorr#rQr,rr\rrrrSrrrrr]Zntohsrrrrrrrrrd)rZ ares_noderrrr r r!r!s$  " $&z"ares_addrinfo_node_result.__init__Nrr r r r!rsrc@seZdZdZddZdS)ares_addrinfo_cname_result)raliasrcCs0|j|_tt|j|_tt|j|_dSr")rrr#r]rr)rZ ares_cnamer r r!r=sz#ares_addrinfo_cname_result.__init__Nrr r r r!r:src@seZdZdZddZdS)rF)cnamesnodescCsjg|_g|_|j}|tjkr4|jt||j}q|j}|tjkr\|jt||j}q:t |dSr") rrr#rSr@rrVrZai_nextr,Zares_freeaddrinfo)rZ ares_addrinfoZ cname_ptrZnode_ptrr r r!rFs  zares_addrinfo_result.__init__Nrr r r r!rFCsrFrr )EZ_caresrr#rr,Z _cffi_backendr-Zares_library_initZARES_LIB_INIT_ALL RuntimeErrorrZutilsrrrZ_versionr Zcollections.abcr<r\r functoolssysZexported_pycares_symbolsZsymbolrglobalsZexported_pycares_symbols_mapitemskvr]Z ares_versionrSrR Exceptionrsetr*Z def_externr)r5r9rErHr:rgrrIrOrUrWrXrYr[r^r_r`rarbr.r6rrrFlistkeys__all__r r r r!s         .