MOON
Server: Apache/2.2.34 (Unix) mod_ssl/2.2.34 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 FrontPage/5.0.2.2635
System: Linux server.asjudinet.com 2.6.32-042stab141.3 #1 SMP Fri Nov 15 22:45:34 MSK 2019 i686
User: asjudine (504)
PHP: 5.2.17
Disabled: NONE
Upload Files
File: //proc/2/root/usr/lib/python2.4/site-packages/dns/renderer.pyc
mò
w§Qc@sndZdkZdkZdkZdkZdkZdkZdZdZ	dZ
dZdefd„ƒYZ
dS(s*Help for building DNS wire format messagesNiiiitRenderercBs‰tZdZedded„Zd„Zd„Zeii	d„Z
d„Zd„Zed	„Z
eiid
„Zd„Zd„ZRS(
stHelper 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
    iiÿÿcCs¡tiƒ|_|djotiddƒ|_n
||_||_||_	||_
h|_t|_
ddddg|_|iiddƒd|_dS(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.
        iiÿÿtitN(t	cStringIOtStringIOtselftoutputtidtNonetrandomtrandinttflagstmax_sizetorigintcompresstQUESTIONtsectiontcountstwritetmac(RRRRR
((t0/usr/lib/python2.4/site-packages/dns/renderer.pyt__init__Js

						cCs€|ii|ƒ|iiƒg}x;|iiƒD]*\}}||jo|i
|ƒq3q3Wx|D]}|i|=qhWdS(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(RRtseektwherettruncatetkeys_to_deleteRt	iteritemstktvtappend(RRRRR((Rt	_rollbackgs

cCsA|i|jo-|i|jotii‚n||_ndS(sZSet 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(RRtdnst	exceptiont	FormError(RR((Rt_set_sectionys

cCsª|itƒ|iiƒ}|i|i|i|i	ƒ|ii
tid||ƒƒ|iiƒ}||ijo|i|ƒtii‚n|itcd7<dS(sAdd 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!HHiN(RR"RRttelltbeforetqnametto_wireRR
RtstructtpacktrdtypetrdclasstafterRRRR tTooBigR(RR%R)R*R+R$((Rtadd_questionŠs	

cKs|i|ƒ|iiƒ}|i|i|i|i	|}|iiƒ}||i
jo|i|ƒtii‚n|i|c|7<dS(sAdd the rrset to the specified section.

        Any keyword arguments are passed on to the rdataset's to_wire()
        routine.

        @param section: the section
        @type section: int
        @param rrset: the rrset
        @type rrset: dns.rrset.RRset object
        N(RR"RRR#R$trrsetR&RR
tkwtnR+RRRR R,R(RRR.R/R+R0R$((Rt	add_rrsetŸs

!
cKs“|i|ƒ|iiƒ}|i||i|i	|i
|}|iiƒ}||ijo|i|ƒtii‚n|i|c|7<dS(s©Add the rdataset to the specified section, using the specified
        name as the owner name.

        Any keyword arguments are passed on to the rdataset's to_wire()
        routine.

        @param section: the section
        @type section: int
        @param name: the owner name
        @type name: dns.name.Name object
        @param rdataset: the rdataset
        @type rdataset: dns.rdataset.Rdataset object
        N(RR"RRR#R$trdatasetR&tnameRR
R/R0R+RRRR R,R(RRR3R2R/R+R0R$((Rtadd_rdataset´s

$
c
Cs|dM}||d>O}|itƒ|iiƒ}|iit	i
ddtii
||dƒƒ|d
j	oS|iiƒ}xÉ|D]Á}t	i
d|idƒ}
|ii|
ƒ|iiƒ}	|i|iƒ|iiƒ}||	djpt‚|ii|	dƒt	i
d||	ƒ}
|ii|
ƒ|iiddƒq…W|iiƒ}||djpt‚|ii|dƒt	i
d||ƒ}
|ii|
ƒ|iiddƒn|iiƒ}||ijo|i|ƒtii‚n|i tcd	7<d
S(sØAdd an EDNS OPT record to the message.

        @param edns: The EDNS level to use.
        @type edns: int
        @param ednsflags: EDNS flag values.
        @type ednsflags: int
        @param payload: The EDNS sender's payload field, which is the maximum
        size of UDP datagram the sender can handle.
        @type payload: int
        @param options: The EDNS options list
        @type options: list of dns.edns.Option instances
        @see: RFC 2671
        lÿ~is!BHHIHis!HHiis!HiN(!t	ednsflagstednsRR"t
ADDITIONALRR#R$RR'R(Rt	rdatatypetOPTtpayloadtoptionsRtlstarttopttotypetstufftstartR&tendtAssertionErrorRtlendR+RRR R,R(
RR6R5R:R;R=RARCR+R@R?R<R$((Rtadd_ednsÍs@


!


c	CsÄ|itƒ|iiƒ}|iiƒ}ti	i
|||t
tiƒƒ|||||d|ƒ	\}	|_}|i|i|i|iƒ|iitidtiiti i!ddƒƒ|iiƒ}
|ii|	ƒ|iiƒ}
|
|
djpt$‚|
|i%jo|i&|ƒti'i(‚n|ii)|
dƒ|iitid|
|
ƒƒ|i*tcd7<|ii)dƒ|iitid|i*tƒƒ|ii)ddƒd	S(
sõAdd a TSIG signature to the message.

        @param keyname: the TSIG key name
        @type keyname: dns.name.Name object
        @param secret: the secret to use
        @type secret: string
        @param fudge: TSIG time fudge
        @type fudge: int
        @param id: the message id to encode in the tsig signature
        @type id: int
        @param tsig_error: TSIG error code; default is 0.
        @type tsig_error: int
        @param other_data: TSIG other data.
        @type other_data: string
        @param request_mac: This message is a response to the request which
        had the specified MAC.
        @type request_mac: string
        @param algorithm: the TSIG algorithm to use
        @type algorithm: dns.name.Name object
        t	algorithms!HHIHiiis!Hii
N(+RR"R7RR#R$tgetvaluetsRttsigtsigntkeynametsecrettintttimetfudgeRt
tsig_errort
other_datatrequest_macREt
tsig_rdataRtctxR&RR
RR'R(R8tTSIGt
rdataclasstANYtrdata_startR+RBRRR R,RR(RRJRKRNRRORPRQRERRR+RSRGRWR$((Rtadd_tsigüs<

 #c
Cst|iidƒ|iitid|i|i|id|id|id|idƒƒ|iiddƒdS(s¾Write the DNS message header.

        Writing the DNS message header is done after all sections
        have been rendered, but before the optional TSIG signature
        is added.
        is!HHHHHHiiiN(	RRRRR'R(RRR(R((Rtwrite_header1scCs
|iiƒS(s@Return the wire format message.

        @rtype: string
        N(RRRF(R((Rtget_wire?s(t__name__t
__module__t__doc__RRRR"RRUtINR-R1R4RDRHtdefault_algorithmRXRYRZ(((RRs)				/5	(R]RR'R	RMt
dns.exceptionRtdns.tsigRtANSWERt	AUTHORITYR7tobjectR(
RR'R	RRcRRRMRbR7((Rt?s