Your IP : 216.73.216.196


Current Path : /opt/alt/python37/lib64/python3.7/site-packages/twisted/names/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/site-packages/twisted/names/__pycache__/common.cpython-37.pyc

B

��d^5%�.@sJdZddlmZmZddlZddlmZddlmZddl	m
Z
mZmZddl	m
Z
mZddl	mZdd	lmZmZmZdd
lmZed�\ZZZdZeej�Gd
d�d��Zd)dd�Zejdejdej dej!dej"dej#dej$dej%dej&dej'dej(dej)dej*dej+dej,d ej-d!ej.d"ej/d#ej0d$ej1d%ej2d&ej3d'ej4d(iZ5dS)*z>
Base functionality useful to various parts of Twisted Names.
�)�division�absolute_importN)�implementer)�dns)�DNSFormatError�DNSServerError�DNSNameError)�DNSNotImplementedError�DNSQueryRefusedError)�DNSUnknownError)�defer�error�
interfaces)�Logger�)�rrc
@sVeZdZdZe�Zejeej	e
ejeej
eejeiZdZdd�Zdd�Zd>dd�Zd	d
�Zd?dd�Zd@d
d�ZdAdd�ZdBdd�ZdCdd�ZdDdd�ZdEdd�ZdFdd�ZdGdd�ZdHdd�Z dIdd �Z!dJd!d"�Z"dKd#d$�Z#dLd%d&�Z$dMd'd(�Z%dNd)d*�Z&dOd+d,�Z'dPd-d.�Z(dQd/d0�Z)dRd1d2�Z*dSd3d4�Z+dTd5d6�Z,dUd7d8�Z-dVd:d;�Z.d<d=�Z/dS)W�ResolverBaseaN
    L{ResolverBase} is a base class for implementations of
    L{interfaces.IResolver} which deals with a lot
    of the boilerplate of implementing all of the lookup methods.

    @cvar _errormap: A C{dict} mapping DNS protocol failure response codes
        to exception classes which will be used to represent those failures.
    NcCs0i|_x$t��D]\}}t||�|j|<qWdS)N)�typeToMethod�items�getattr)�self�k�vrr�G/opt/alt/python37/lib64/python3.7/site-packages/twisted/names/common.py�__init__4szResolverBase.__init__cCs|j�|t�S)z�
        Convert a response code (one of the possible values of
        L{dns.Message.rCode} to an exception instance representing it.

        @since: 10.0
        )�	_errormap�getr)rZresponseCoderrr�exceptionForCode:szResolverBase.exceptionForCodec
Csdy|j|j}Wn<tk
rL|jjd|d�t�|j|jjt	j
|j|�SXt�||jj|�SdS)Nz:Query of unknown type {query.type} for {query.name.name!r})�query)r�type�KeyError�_log�debugrZ
maybeDeferred�_lookup�namer�IN)rr�timeout�methodrrrrDszResolverBase.querycCst�td��S)NzResolverBase._lookup)rZfail�NotImplementedError)rr$�clsrr&rrrr#QszResolverBase._lookupcCs|�t�|�tjtj|�S)N)r#r�domainStringr%�A)rr$r&rrr�
lookupAddressUszResolverBase.lookupAddresscCs|�t�|�tjtj|�S)N)r#rr*r%�AAAA)rr$r&rrr�lookupIPV6AddressYszResolverBase.lookupIPV6AddresscCs|�t�|�tjtj|�S)N)r#rr*r%�A6)rr$r&rrr�lookupAddress6]szResolverBase.lookupAddress6cCs|�t�|�tjtj|�S)N)r#rr*r%�MX)rr$r&rrr�lookupMailExchangeaszResolverBase.lookupMailExchangecCs|�t�|�tjtj|�S)N)r#rr*r%�NS)rr$r&rrr�lookupNameserverseszResolverBase.lookupNameserverscCs|�t�|�tjtj|�S)N)r#rr*r%�CNAME)rr$r&rrr�lookupCanonicalNameisz ResolverBase.lookupCanonicalNamecCs|�t�|�tjtj|�S)N)r#rr*r%�MB)rr$r&rrr�
lookupMailBoxmszResolverBase.lookupMailBoxcCs|�t�|�tjtj|�S)N)r#rr*r%�MG)rr$r&rrr�lookupMailGroupqszResolverBase.lookupMailGroupcCs|�t�|�tjtj|�S)N)r#rr*r%�MR)rr$r&rrr�lookupMailRenameuszResolverBase.lookupMailRenamecCs|�t�|�tjtj|�S)N)r#rr*r%�PTR)rr$r&rrr�
lookupPointeryszResolverBase.lookupPointercCs|�t�|�tjtj|�S)N)r#rr*r%�SOA)rr$r&rrr�lookupAuthority}szResolverBase.lookupAuthoritycCs|�t�|�tjtj|�S)N)r#rr*r%�NULL)rr$r&rrr�
lookupNull�szResolverBase.lookupNullcCs|�t�|�tjtj|�S)N)r#rr*r%�WKS)rr$r&rrr�lookupWellKnownServices�sz$ResolverBase.lookupWellKnownServicescCs|�t�|�tjtj|�S)N)r#rr*r%�SRV)rr$r&rrr�
lookupService�szResolverBase.lookupServicecCs|�t�|�tjtj|�S)N)r#rr*r%�HINFO)rr$r&rrr�lookupHostInfo�szResolverBase.lookupHostInfocCs|�t�|�tjtj|�S)N)r#rr*r%�MINFO)rr$r&rrr�lookupMailboxInfo�szResolverBase.lookupMailboxInfocCs|�t�|�tjtj|�S)N)r#rr*r%�TXT)rr$r&rrr�
lookupText�szResolverBase.lookupTextcCs|�t�|�tjtj|�S)N)r#rr*r%�SPF)rr$r&rrr�lookupSenderPolicy�szResolverBase.lookupSenderPolicycCs|�t�|�tjtj|�S)N)r#rr*r%�RP)rr$r&rrr�lookupResponsibility�sz!ResolverBase.lookupResponsibilitycCs|�t�|�tjtj|�S)N)r#rr*r%�AFSDB)rr$r&rrr�lookupAFSDatabase�szResolverBase.lookupAFSDatabasecCs|�t�|�tjtj|�S)N)r#rr*r%�AXFR)rr$r&rrr�
lookupZone�szResolverBase.lookupZonecCs|�t�|�tjtj|�S)N)r#rr*r%�NAPTR)rr$r&rrr�lookupNamingAuthorityPointer�sz)ResolverBase.lookupNamingAuthorityPointercCs|�t�|�tjtj|�S)N)r#rr*r%�ALL_RECORDS)rr$r&rrr�lookupAllRecords�szResolverBase.lookupAllRecords�
cCs*t�|�}|�||�}|�|j||�|S)N)rr*rX�addCallback�
_cbRecords)rr$r&�effort�drrr�
getHostByName�s
zResolverBase.getHostByNamecCs8|\}}}t|t�|�||||�}|s4t�|��|S)N)�
extractRecordr�Namer
ZDNSLookupError)r�recordsr$r\�ans�auth�add�resultrrrr[�s


zResolverBase._cbRecords)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NrY)0�__name__�
__module__�__qualname__�__doc__rr!rZEFORMATrZESERVERrZENAMErZENOTIMPr	ZEREFUSEDr
rrrrrr#r,r.r0r2r4r6r8r:r<r>r@rBrDrFrHrJrLrNrPrRrTrVrXr^r[rrrrr sJ	




























rrYcs��sdSttd�r~x4|D],}|j�kr|jtjkrt�tj|jj	�SqWx4|D],}|j�krN|jtj
krNt�tj|jj	�SqNWx4|D],}|j�kr�|jtjkr�t�tj|jj	�Sq�WxZ|D]R}|j�kr�|jtj
kr�t||jj|�d�}|�s|j|jjj�dd�S|Sq�Wxj|D]b}|jtjk�r,�qddlm}|j|jjj�d�tjfgd�����fd	d
�}���j��|�SWdS)am
    Resolve a name to an IP address, following I{CNAME} records and I{NS}
    referrals recursively.

    This is an implementation detail of L{ResolverBase.getHostByName}.

    @param resolver: The resolver to use for the next query (unless handling
    an I{NS} referral).
    @type resolver: L{IResolver}

    @param name: The name being looked up.
    @type name: L{dns.Name}

    @param answers: All of the records returned by the previous query (answers,
    authority, and additional concatenated).
    @type answers: L{list} of L{dns.RRHeader}

    @param level: Remaining recursion budget. This is decremented at each
    recursion. The query returns L{None} when it reaches 0.
    @type level: L{int}

    @returns: The first IPv4 or IPv6 address (as a dotted quad or colon
    quibbles), or L{None} when no result is found.
    @rtype: native L{str} or L{None}
    N�	inet_ntop�)r\r)�client�ascii)Zserverscs$|\}}}t��|||�d�S)Nrk)r_)rarbrcrd)�levelr$�
nsResolverrr�
queryAgains
z!extractRecord.<locals>.queryAgain)�hasattr�socketr$rrr/rj�AF_INET6�payload�addressr-r+�AF_INETr5r_r^r3�
twisted.namesrlZResolver�decodeZPORTr,rZ)Zresolverr$Zanswersrn�rrerlrpr)rnr$rorr_�s8





r_r,r.r0r4r6r@r8r:r<rBrDr>rHrJr2rLrNrPrRrFrVrTrX)rY)6ri�
__future__rrrrZzope.interfacerrwrZtwisted.names.errorrrrr	r
rZtwisted.internetrr
rZtwisted.loggerr�rangeZ_ANSZ_AUTHZ_ADDZEMPTY_RESULTZ	IResolverrr_r+r-r/r3r5r?r7r9r;rArCr=rGrIr1rKrMrOrQrErUrSrWrrrrr�<module>sJ'
C