
    ih*                        d dl Z d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d d	l mZ d d
l m	Z	 d dl m
Z
 d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! dZ"djG                  d       d Z$d Z% G d  d!e&      Z'y)"    N)AF_INET)	AF_UNSPEC)AI_CANONNAME)
AI_PASSIVE)AI_NUMERICHOST)
EAI_NONAME)EAI_SERVICE)
SOCK_DGRAM)SOCK_STREAM)SOL_TCP)error)gaierror)getaddrinfo)getnameinfo)gethostbyaddr)gethostbyname)gethostbyname_ex)getservbyname)string_types)	text_type)hostname_types)integer_types)PYPY)MAC)is_ipv6_addr fooidnac                 L   g }t        | t              r	 t        |       } n,| d} n't        | t              rnt        d| t        |             t        | dz        } |s|r|j                  |       | |fS # t        $ r& 	 |dk(  r| }	 t	        | d      } |j                  t               	 | t	        |d      k(  r|j                  t               n{# t        $ r Y npw xY w# t        $ r$ t	        | d      } |j                  t               Y n@w xY w|t        k(  rt	        | d      } n&|t        k(  rt	        | d      } nt        t        d      nV# t        $ r6}dt        |      v rt        t        d      t        t        |            d }~wt        $ r t        d|       w xY wY Vw xY w)Nr   tcpudpz&Servname not supported for ai_socktypez	not foundzInt or String expected   )
isinstancer   int
ValueErrornative_getservbynameappendr   r
   r   r   r	   strUnicodeEncodeErrorr   type)portsocktype	socktypesorigportexs        V/var/www/html/dev/engine/venv/lib/python3.12/site-packages/gevent/resolver/__init__.py_lookup_portr1   '   s   I$%	<t9D: 
	D-	(,dDJ??te|D"?K  	<<q=#H!3D%@!((5
!#';He'LL ) 0 0 <$ ! ! ! 53D%@!((45 ,/e<D+/e<D";0XYY (#b')";0XYYs2w''% <4d;;<5	<sw   A3 3
F#>E	!C($CE		CE	CE	*D	E	D		?E	F#		F1FFF#"F#c                     t        | t              st        dt        |             | dv r<t	        d d|t
        dt              }t        |      dk7  rt        d      |d   d   d   S | S )Nz0argument 1 must be str, bytes or bytearray, not )     r      z%wildcard resolved to multiple address   )	r#   r   	TypeErrorr*   native_getaddrinfor
   r   lenr   )hostnamefamilyresults      r0   _resolve_specialr=   V   sl    h/PTU]P^`aa:#D!VZJOv;!?@@ay|AOr4   c                      e Zd ZdZdZedz   ZerdndZdZ e	e
      j                         D  ch c]  \  }}|j                  d      r| c}}} Z e	e
      j                         D  ch c]  \  }}|j                  d      r|d	vr| c}}} Zd
 Zed        Zd ZefdZd ZefdZd ZddZd Zd Zd Zd Zd Zyc c}}} w c c}}} w )AbstractResolverr   )s	   localhosts   ip6-localhosts   ::1s	   127.0.0.1)s   255.255.255.255s   <broadcast>z,nodename nor servname provided, or not knownzName or service not knownzai_family not supportedAF_SOCK_)SOCK_CLOEXECSOCK_MAX_SIZEc                      y)z
        Release resources held by this object.

        Subclasses that define resources should override.

        .. versionadded:: 22.10.1
        Nr   )selfs    r0   closezAbstractResolver.close   s    r4   c                 B     dd l }|j                          fd       }|S )Nr   c                     	  | g|i |S # t         $ rV}|j                  d   t        k(  r:t        |j                        dk(  r"t        | j                  f|_        t        |_         d }~ww xY w)Nr   r5   )r   argsr   r9   EAI_NONAME_MSGerrno)rE   rI   kwargsr/   funcs       r0   resolvez0AbstractResolver.fixup_gaierror.<locals>.resolve   sh    D242622 771:+BGG0A)4+>+>?BG)BHs    	A.AA))A.)	functoolswraps)rM   rO   rN   s   `  r0   fixup_gaierrorzAbstractResolver.fixup_gaierror   s(    			 
	 r4   c                     t        |t              r&|j                  | j                        }t	        |      S t        |t        t
        f      s!t        dt        |      j                  z        t	        |      S )Nz(Expected str, bytes or bytearray, not %s)	r#   r   encodeHOSTNAME_ENCODINGbytes	bytearrayr7   r*   __name__)rE   r:   s     r0   _hostname_to_bytesz#AbstractResolver._hostname_to_bytes   sb    h	*t'='=>H X Hui&89FhI`I``aaXr4   c                     | j                  |      }|| j                  v rt        |      S t        ||      }| j	                  ||      d   d   S )Nr   )rX   _LOCAL_AND_BROADCAST_HOSTNAMESnative_gethostbynamer=   r   rE   r:   r;   s      r0   r   zAbstractResolver.gethostbyname   sV     **84t:::'11#Hf5$$Xv6r:1==r4   c                     | j                  ||      }g }| j                  |d|t        t        t              }|d   d   }|D ]  }|j                  |d   d           |||fS )z&Raise an ``herror`` or a ``gaierror``.r      r6   )_getaliasesr   r   r   r   r'   )rE   hostname_bytesr;   aliases	addressestuples	canonicalitems           r0   _gethostbyname_exz"AbstractResolver._gethostbyname_ex   sz    "">6:	!!.!V"-")<9 1IaL	 	)DT!WQZ(	) 7I..r4   c                 z    | j                  |      }|| j                  v rt        |      S | j                  ||      S N)rX   r[   native_gethostbyname_exrg   r]   s      r0   r   z!AbstractResolver.gethostbyname_ex   s@    **84t::: +844%%h77r4   c                     t         ri   NotImplementedError)rE   
host_bytesr+   r;   r,   protoflagss          r0   _getaddrinfozAbstractResolver._getaddrinfo       !!r4   c                     || j                  |      nd }t        |t              r3|t        z  s*|| j                  v st        |      r!|j                  d      rt        ||||||      S | j                  ||||||      S )Ns   fe80)	rX   r#   rU   r   _LOCAL_HOSTNAMESr   
startswithr8   rq   )rE   hostr+   r;   r,   ro   rp   s          r0   r   zAbstractResolver.getaddrinfo   s    040@t&&t,d tU+N*4000 &4??7+C &dD&(E5QQ  tVXueLLr4   c                     g S ri   r   r]   s      r0   r`   zAbstractResolver._getaliases   s    	r4   c                     t         )zRaises herror.rl   )rE   ip_address_bytess     r0   _gethostbyaddrzAbstractResolver._gethostbyaddr   s    !!r4   c                     t        |t              }| j                  |      }|| j                  v rt	        |      S | j                  |      S ri   )r=   r   rX   r[   native_gethostbyaddrrz   )rE   
ip_addresss     r0   r   zAbstractResolver.gethostbyaddr   sH    %j)<
,,Z8
<<<'
33"":..r4   c                     t         ri   rl   )rE   address_bytesr+   sockaddrrp   s        r0   _getnameinfozAbstractResolver._getnameinfo   rr   r4   c                    t        |t              st        d      t        |t              st        d      |d   }| j	                  |d         }|| j
                  v rt        ||      S |d   }t        |t              st        dt        |      z        t        s|dk\  rd}t        r|dk  s|dk\  rt        d      t        |      dkD  r|d   }|d	kD  rt        d
      | j                  ||||      S )Nzan integer is requiredz(getnameinfo() argument 1 must be a tupler   r5   zport must be an integer, not %sr"   zport must be 0-65535.   i z*getnameinfo(): flowinfo must be 0-1048575.)r#   r   r7   tuplerX   r[   native_getnameinfor*   r   OverflowErrorr9   r   )rE   r   rp   addressr+   flowinfos         r0   r   zAbstractResolver.getnameinfo   s    %/455(E*FGG1+))(1+6d999%h66{$.=T
JKK DTAX   788x=1{H'!#$PQQ  $%@@r4   N)r   r   r   r   )rW   
__module____qualname__rT   rt   r[   r   rJ   EAI_FAMILY_MSGvars_socketitemsru   _KNOWN_ADDR_FAMILIES_KNOWN_SOCKTYPESrF   staticmethodrQ   rX   r   r   rg   r   rq   r   r`   rz   r   r   r   ).0kvs   000r0   r?   r?   b   s(    &6 9 &"  	7#  	"  M'') Aq<< 	
 M'') Aq<< 66 	
   .5 
>/ 18 8"M."/"%Ays   C,!Cr?   )(r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r8   r   r   r   r|   r   r\   r   rj   r   r&   gevent._compatr   r   r   r   r   r   gevent.resolver._addressesr   __all__rS   r1   r=   objectr?   r   r4   r0   <module>r      s          "        5 5 9 9 ? 9 ( $ ) (   3
 f +^	{Av {Ar4   