| 
				Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /lib64/python2.7/site-packages/dns/  | 
Upload File :  | 
�
w�Qc           @   s�   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d Z d Z	 d Z
 d Z d e f d �  �  YZ
 d S(	   s*   Help for building DNS wire format messagesi����Ni    i   i   i   t   Rendererc           B   s�   e  Z d  Z d
 d d d
 d � Z d �  Z d �  Z e j j	 d � Z
 d �  Z d �  Z d
 d	 � Z
 e j j d
 � Z d �  Z d �  Z RS(   st  Helper class for building DNS wire-format messages.
    Most applications can use the higher-level L{dns.message.Message}
    class and its to_wire() method to generate wire-format messages.
    This class is for those applications which need finer control
    over the generation of messages.
    Typical use::
        r = dns.renderer.Renderer(id=1, flags=0x80, max_size=512)
        r.add_question(qname, qtype, qclass)
        r.add_rrset(dns.renderer.ANSWER, rrset_1)
        r.add_rrset(dns.renderer.ANSWER, rrset_2)
        r.add_rrset(dns.renderer.AUTHORITY, ns_rrset)
        r.add_edns(0, 0, 4096)
        r.add_rrset(dns.renderer.ADDTIONAL, ad_rrset_1)
        r.add_rrset(dns.renderer.ADDTIONAL, ad_rrset_2)
        r.write_header()
        r.add_tsig(keyname, secret, 300, 1, 0, '', request_mac)
        wire = r.get_wire()
    @ivar output: where rendering is written
    @type output: cStringIO.StringIO object
    @ivar id: the message id
    @type id: int
    @ivar flags: the message flags
    @type flags: int
    @ivar max_size: the maximum size of the message
    @type max_size: int
    @ivar origin: the origin to use when rendering relative names
    @type origin: dns.name.Name object
    @ivar compress: the compression table
    @type compress: dict
    @ivar section: the section currently being rendered
    @type section: int (dns.renderer.QUESTION, dns.renderer.ANSWER,
    dns.renderer.AUTHORITY, or dns.renderer.ADDITIONAL)
    @ivar counts: list of the number of RRs in each section
    @type counts: int list of length 4
    @ivar mac: the MAC of the rendered message (if TSIG was used)
    @type mac: string
    i    i��  c         C   s�   t  j �  |  _ | d k r3 t j d d � |  _ n	 | |  _ | |  _ | |  _ | |  _	 i  |  _
 t |  _ d d d d g |  _
 |  j j d � d |  _ d S(   s�  Initialize a new renderer.
        @param id: the message id
        @type id: int
        @param flags: the DNS message flags
        @type flags: int
        @param max_size: the maximum message size; the default is 65535.
        If rendering results in a message greater than I{max_size},
        then L{dns.exception.TooBig} will be raised.
        @type max_size: int
        @param origin: the origin to use when rendering relative names
        @type origin: dns.name.Namem or None.
        i    i��  t    i   t    Nt               (   t	   cStringIOt   StringIOt   outputt   Nonet   randomt   randintt   idt   flagst   max_sizet   origint   compresst   QUESTIONt   sectiont   countst   writet   mac(   t   selfR
   R   R   R
   (    (    s2   /usr/lib64/python2.7/site-packages/dns/renderer.pyt   __init__J   s    						c         C   s~   |  j  j | � |  j  j �  g  } x9 |  j j �  D]( \ } } | | k r3 | j | � q3 q3 Wx | D] } |  j | =qf Wd S(   s�   Truncate the output buffer at offset I{where}, and remove any
        compression table entries that pointed beyond the truncation
        point.
        @param where: the offset
        @type where: int
        N(   R   t   seekt   truncateR   t	   iteritemst   append(   R   t   wheret   keys_to_deletet   kt   v(    (    s2   /usr/lib64/python2.7/site-packages/dns/renderer.pyt	   _rollbackg   s    	
c         C   s=   |  j  | k r9 |  j  | k r- t j j � n  | |  _  n  d S(   sZ  Set the renderer's current section.
        Sections must be rendered order: QUESTION, ANSWER, AUTHORITY,
        ADDITIONAL.  Sections may be empty.
        @param section: the section
        @type section: int
        @raises dns.exception.FormError: an attempt was made to set
        a section value less than the current section.
        N(   R   t   dnst	   exceptiont	   FormError(   R   R   (    (    s2   /usr/lib64/python2.7/site-packages/dns/renderer.pyt   _set_sectiony   s    c         C   s�   |  j  t � |  j j �  } | j |  j |  j |  j � |  j j t j	 d | | � � |  j j �  } | |  j
 k r� |  j | � t j
 j � n  |  j t c d 7<d S(   s  Add a question to the message.
        @param qname: the question name
        @type qname: dns.name.Name
        @param rdtype: the question rdata type
        @type rdtype: int
        @param rdclass: the question rdata class
        @type rdclass: int
        s   !HHi   N(   R"