shell bypass 403

Cubjrnet7 Shell


name : node.cpython-39.pyc
a

�M�ew1�@s�dZddlZddlZddlmZmZmZddlZddl	Zddl
ZddlZddlZddl
ZddlZejjhZejjejjejjhZdd�ZejGdd�dej��ZGdd	�d	�ZejjGd
d�de��ZdS)z)DNS nodes.  A node is a set of rdatasets.�N)�Any�Dict�OptionalcCs||vp|tjjko||vS�N)�dns�	rdatatypeZRRSIG)Zrdtypes�rdtype�covers�r
�,/usr/lib/python3.9/site-packages/dns/node.py�_matches_type_or_its_signature,src@sReZdZdZdZdZdZeej	j
ej	j
dd�dd��Zeejj
dd�d	d
��ZdS)�NodeKindzRdatasets in nodesr��)rr	�returncCs.tt||�rtjStt||�r$tjStjSdSr)r�_cname_typesr
�CNAME�_neutral_types�NEUTRAL�REGULAR)�clsrr	r
r
r�classify8s
zNodeKind.classify)�rdatasetrcCs|�|j|j�Sr)rrr	)rrr
r
r�classify_rdatasetCszNodeKind.classify_rdatasetN)�__name__�
__module__�__qualname__�__doc__rrr�classmethodrr�	RdataTyperr�Rdatasetrr
r
r
rr
0s�
r
c@s(eZdZdZdgZdd�Zejje	e
efe
d�dd�Zdd	�Z
d
d�Zdd
�Zdd�Zdd�Zdd�Zejjdfejjejjejjeejjd�dd�Zejjdfejjejjejjeeejjd�dd�Zejjfejjejjejjdd�dd�Zejjdd�dd �Ze d!�d"d#�Z!ed!�d$d%�Z"dS)&�Nodea�A Node is a set of rdatasets.

    A node is either a CNAME node or an "other data" node.  A CNAME
    node contains only CNAME, KEY, NSEC, and NSEC3 rdatasets along with their
    covering RRSIG rdatasets.  An "other data" node contains any
    rdataset other than a CNAME or RRSIG(CNAME) rdataset.  When
    changes are made to a node, the CNAME or "other data" state is
    always consistent with the update, i.e. the most recent change
    wins.  For example, if you have a node which contains a CNAME
    rdataset, and then add an MX rdataset to it, then the CNAME
    rdataset will be deleted.  Likewise if you have a node containing
    an MX rdataset and add a CNAME rdataset, the MX rdataset will be
    deleted.
    �	rdatasetscCs
g|_dSr�r"��selfr
r
r�__init__Zsz
Node.__init__)�name�kwrcKsRt��}|jD]2}t|�dkr|�|j|fi|���|�d�q|��dd�S)a"Convert a node to text format.

        Each rdataset at the node is printed.  Any keyword arguments
        to this method are passed on to the rdataset's to_text() method.

        *name*, a ``dns.name.Name``, the owner name of the
        rdatasets.

        Returns a ``str``.

        r�
N���)�io�StringIOr"�len�write�to_text�getvalue)r%r'r(�s�rdsr
r
rr/^s

zNode.to_textcCsdtt|��dS)Nz
<DNS node �>)�str�idr$r
r
r�__repr__rsz
Node.__repr__cCs<|jD]}||jvrdSq|jD]}||jvr"dSq"dS)NFTr#)r%�otherZrdr
r
r�__eq__us



zNode.__eq__cCs|�|�Sr)r8)r%r7r
r
r�__ne__�szNode.__ne__cCs
t|j�Sr)r-r"r$r
r
r�__len__�szNode.__len__cCs
t|j�Sr)�iterr"r$r
r
r�__iter__�sz
Node.__iter__cCsbt|j�dkrRt�|�}|tjkr6dd�|jD�|_n|tjkrRdd�|jD�|_|j�|�dS)a�Append rdataset to the node with special handling for CNAME and
        other data conditions.

        Specifically, if the rdataset being appended has ``NodeKind.CNAME``,
        then all rdatasets other than KEY, NSEC, NSEC3, and their covering
        RRSIGs are deleted.  If the rdataset being appended has
        ``NodeKind.REGULAR`` then CNAME and RRSIG(CNAME) are deleted.
        rcSs g|]}t�|�tjkr|�qSr
)r
rr��.0r2r
r
r�
<listcomp>�s�z)Node._append_rdataset.<locals>.<listcomp>cSs g|]}t�|�tjkr|�qSr
)r
rrr=r
r
rr?�s�N)r-r"r
rrr�append�r%r�kindr
r
r�_append_rdataset�s


�

�zNode._append_rdatasetF��rdclassrr	�creatercCsH|jD]}|�|||�r|Sq|s*t�tj�|||�}|�|�|S)a*Find an rdataset matching the specified properties in the
        current node.

        *rdclass*, a ``dns.rdataclass.RdataClass``, the class of the rdataset.

        *rdtype*, a ``dns.rdatatype.RdataType``, the type of the rdataset.

        *covers*, a ``dns.rdatatype.RdataType``, the covered type.
        Usually this value is ``dns.rdatatype.NONE``, but if the
        rdtype is ``dns.rdatatype.SIG`` or ``dns.rdatatype.RRSIG``,
        then the covers value will be the rdata type the SIG/RRSIG
        covers.  The library treats the SIG and RRSIG types as if they
        were a family of types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA).
        This makes RRSIGs much easier to work with than if RRSIGs
        covering different rdata types were aggregated into a single
        RRSIG rdataset.

        *create*, a ``bool``.  If True, create the rdataset if it is not found.

        Raises ``KeyError`` if an rdataset of the desired type and class does
        not exist and *create* is not ``True``.

        Returns a ``dns.rdataset.Rdataset``.
        )r"�match�KeyErrorrrr rC�r%rErr	rFr2r
r
r�
find_rdataset�s 


zNode.find_rdatasetcCs0z|�||||�}Wnty*d}Yn0|S)a�Get an rdataset matching the specified properties in the
        current node.

        None is returned if an rdataset of the specified type and
        class does not exist and *create* is not ``True``.

        *rdclass*, an ``int``, the class of the rdataset.

        *rdtype*, an ``int``, the type of the rdataset.

        *covers*, an ``int``, the covered type.  Usually this value is
        dns.rdatatype.NONE, but if the rdtype is dns.rdatatype.SIG or
        dns.rdatatype.RRSIG, then the covers value will be the rdata
        type the SIG/RRSIG covers.  The library treats the SIG and RRSIG
        types as if they were a family of
        types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA).  This makes RRSIGs much
        easier to work with than if RRSIGs covering different rdata
        types were aggregated into a single RRSIG rdataset.

        *create*, a ``bool``.  If True, create the rdataset if it is not found.

        Returns a ``dns.rdataset.Rdataset`` or ``None``.
        N)rJrHrIr
r
r�get_rdataset�s

zNode.get_rdatasetN�rErr	rcCs&|�|||�}|dur"|j�|�dS)aDDelete the rdataset matching the specified properties in the
        current node.

        If a matching rdataset does not exist, it is not an error.

        *rdclass*, an ``int``, the class of the rdataset.

        *rdtype*, an ``int``, the type of the rdataset.

        *covers*, an ``int``, the covered type.
        N)rKr"�remove)r%rErr	r2r
r
r�delete_rdataset�szNode.delete_rdataset��replacementrcCsNt|tjj�std��t|tjj�r,|��}|�|j	|j
|j�|�|�dS)a�Replace an rdataset.

        It is not an error if there is no rdataset matching *replacement*.

        Ownership of the *replacement* object is transferred to the node;
        in other words, this method does not store a copy of *replacement*
        at the node, it stores *replacement* itself.

        *replacement*, a ``dns.rdataset.Rdataset``.

        Raises ``ValueError`` if *replacement* is not a
        ``dns.rdataset.Rdataset``.
        zreplacement is not an rdatasetN)
�
isinstancerrr �
ValueErrorZrrsetZRRsetZto_rdatasetrNrErr	rC�r%rPr
r
r�replace_rdataset
s�zNode.replace_rdataset�rcCs4|jD]&}t�|j|j�}|tjkr|SqtjS)aTClassify a node.

        A node which contains a CNAME or RRSIG(CNAME) is a
        ``NodeKind.CNAME`` node.

        A node which contains only "neutral" types, i.e. types allowed to
        co-exist with a CNAME, is a ``NodeKind.NEUTRAL`` node.  The neutral
        types are NSEC, NSEC3, KEY, and their associated RRSIGS.  An empty node
        is also considered neutral.

        A node which contains some rdataset which is not a CNAME, RRSIG(CNAME),
        or a neutral type is a a ``NodeKind.REGULAR`` node.  Regular nodes are
        also commonly referred to as "other data".
        )r"r
rrr	rrAr
r
rr$s



z
Node.classifycCsdS)NFr
r$r
r
r�is_immutable9szNode.is_immutable)#rrrr�	__slots__r&rr'�Namerr4rr/r6r8r9r:r<rCr�NONE�
rdataclass�
RdataClassr�boolrr rJrrKrNrTr
rrVr
r
r
rr!HsL ��-�
�)��r!cs�eZdZ�fdd�Zejjdfejjejj	ejj	e
ejjd��fdd�
Z
ejjdfejjejj	ejj	e
eejjd��fdd�
Zejjfejjejj	ejj	d	d
�dd�Zejjd	d
�dd�Ze
d�dd�Z�ZS)�
ImmutableNodecs$t���tdd�|jD��|_dS)NcSsg|]}tj�|��qSr
)rrZImmutableRdatasetr=r
r
rr?B�z*ImmutableNode.__init__.<locals>.<listcomp>)�superr&�tupler")r%Znode��	__class__r
rr&?s
�zImmutableNode.__init__FrDcs|rtd��t��|||d�S�N�	immutableF)�	TypeErrorr_rJ�r%rErr	rFrar
rrJEszImmutableNode.find_rdatasetcs|rtd��t��|||d�Src)rer_rKrfrar
rrKPszImmutableNode.get_rdatasetNrLcCstd��dS�Nrd�re)r%rErr	r
r
rrN[szImmutableNode.delete_rdatasetrOcCstd��dSrgrhrSr
r
rrTcszImmutableNode.replace_rdatasetrUcCsdS)NTr
r$r
r
rrVfszImmutableNode.is_immutable)rrrr&rrrYrZr[rr\rr rJrrKrNrTrV�
__classcell__r
r
rarr]=s8
���
���r])r�enumr+�typingrrrZ
dns.immutablerZdns.nameZdns.rdataclassZdns.rdatasetZ
dns.rdatatypeZdns.rendererZ	dns.rrsetrrrZNSECZNSEC3ZKEYrr�unique�Enumr
r!rdr]r
r
r
r�<module>s.��v

© 2025 Cubjrnet7