%PDF- %PDF-
| Direktori : /opt/plesk/python/2.7/lib/python2.7/site-packages/dns/ |
| Current File : //opt/plesk/python/2.7/lib/python2.7/site-packages/dns/renderer.pyc |
�
�ac @ s� d Z d d l m Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m
Z
d Z d Z d Z
d Z d e f d
� � YZ d S( s* Help for building DNS wire format messagesi����( t BytesIONi ( t longi 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 e j j d � Z d � Z d
� Z d � Z RS( s� 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()
output, a BytesIO, where rendering is written
id: the message id
flags: the message flags
max_size: the maximum size of the message
origin: the origin to use when rendering relative names
compress: the compression table
section: an int, the section currently being rendered
counts: list of the number of RRs in each section
mac: the MAC of the rendered message (if TSIG was used)
i i�� c C s� t � | _ | d k r0 t j d d � | _ n | | _ | | _ | | _ | | _ i | _ t
| _ d d d d g | _ | j j
d � d | _ d S( s Initialize a new renderer.i i�� s i t Ns ( R t outputt Nonet randomt randintt idt flagst max_sizet origint compresst QUESTIONt sectiont countst writet mac( t selfR R R
R ( ( sA /opt/plesk/python/2.7/lib/python2.7/site-packages/dns/renderer.pyt __init__M 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 *where*, and remove any
compression table entries that pointed beyond the truncation
point.
N( R t seekt truncateR t itemst append( R t wheret keys_to_deletet kt v( ( sA /opt/plesk/python/2.7/lib/python2.7/site-packages/dns/renderer.pyt _rollback^ s
c C s= | j | k r9 | j | k r- t j j � n | | _ n d S( s Set the renderer's current section.
Sections must be rendered order: QUESTION, ANSWER, AUTHORITY,
ADDITIONAL. Sections may be empty.
Raises dns.exception.FormError if an attempt was made to set
a section value less than the current section.
N( R t dnst exceptiont FormError( R R ( ( sA /opt/plesk/python/2.7/lib/python2.7/site-packages/dns/renderer.pyt _set_sectionm 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.s !HHi N( R R
R t tellt to_wireR R R t structt packR
R R R t TooBigR ( R t qnamet rdtypet rdclasst beforet after( ( sA /opt/plesk/python/2.7/lib/python2.7/site-packages/dns/renderer.pyt add_question| s
c K s� | j | � | j j � } | j | j | j | j | � } | j j � } | | j k rw | j | � t j j
� n | j | c | 7<d S( s� Add the rrset to the specified section.
Any keyword arguments are passed on to the rdataset's to_wire()
routine.
N( R R R! R"