GhostManSec
Server: Apache
System: Linux s323.xrea.com 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User: moonarc (17751)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //usr/lib/python2.7/site-packages/dns/tokenizer.pyc
�
�b�Wc@sdZddlmZddlZddlZddlZddlZddlm	Z	m
Z
mZied6ed6ed6ed	6ed
6ed6ed6Z
ied6Zd
ZdZdZdZdZdZdZdejjfd��YZdefd��YZdefd��YZdS(sTokenize DNS master file formati����(tStringIONi(tlongt	text_typetbinary_typet s	s
t;t(t)t"iiiiiitUngetBufferFullcBseZdZRS(sDAn attempt was made to unget a token when the unget buffer was full.(t__name__t
__module__t__doc__(((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyR	.stTokencBs�eZdZded�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�ZRS(s�A DNS master file format token.

    @ivar ttype: The token type
    @type ttype: int
    @ivar value: The token value
    @type value: string
    @ivar has_escape: Does the token value contain escapes?
    @type has_escape: bool
    tcCs||_||_||_dS(sInitialize a token instance.

        @param ttype: The token type
        @type ttype: int
        @param value: The token value
        @type value: string
        @param has_escape: Does the token value contain escapes?
        @type has_escape: bool
        N(tttypetvaluet
has_escape(tselfRRR((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__init__?s
		cCs
|jtkS(N(RtEOF(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytis_eofMscCs
|jtkS(N(RtEOL(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytis_eolPscCs
|jtkS(N(Rt
WHITESPACE(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
is_whitespaceSscCs
|jtkS(N(Rt
IDENTIFIER(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
is_identifierVscCs
|jtkS(N(Rt
QUOTED_STRING(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytis_quoted_stringYscCs
|jtkS(N(RtCOMMENT(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
is_comment\scCs
|jtkS(N(Rt	DELIMITER(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytis_delimiter_scCs|jtkp|jtkS(N(RRR(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
is_eol_or_eofbscCs5t|t�stS|j|jko4|j|jkS(N(t
isinstanceR
tFalseRR(Rtother((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__eq__escCs5t|t�stS|j|jkp4|j|jkS(N(R#R
tTrueRR(RR%((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__ne__kscCsd|j|jfS(Ns%d "%s"(RR(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__str__qscCsu|js
|Sd}t|j�}d}x:||krd|j|}|d7}|dkrW||krutjj�n|j|}|d7}|j�rW||kr�tjj�n|j|}|d7}||kr�tjj�n|j|}|d7}|j�o|j�s#tjj�ntt	|�dt	|�dt	|��}qWn||7}q+Wt
|j|�S(NRiis\idi
(RtlenRtdnst	exceptiont
UnexpectedEndtisdigittSyntaxErrortchrtintR
R(Rt	unescapedtltitctc2tc3((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytunescapets6	







4cCsdS(Ni((R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__len__�scCst|j|jf�S(N(titerRR(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__iter__�scCs0|dkr|jS|dkr&|jSt�dS(Nii(RRt
IndexError(RR4((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt__getitem__�s
(R
RRR$RRRRRRRR!R"R&R(R)R8R9R;R=(((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyR
3s"
														t	TokenizercBs�eZdZejdd�Zd�Zd�Zd�Z	d�Z
eed�Zd�Z
d�ZeZd	�Zd
�Zd�Zd�Zd
�Zdd�Zdd�Zdd�Zd�Zd�ZRS(s�A DNS master file format tokenizer.

    A token is a (type, value) tuple, where I{type} is an int, and
    I{value} is a string.  The valid types are EOF, EOL, WHITESPACE,
    IDENTIFIER, QUOTED_STRING, COMMENT, and DELIMITER.

    @ivar file: The file to tokenize
    @type file: file
    @ivar ungotten_char: The most recently ungotten character, or None.
    @type ungotten_char: string
    @ivar ungotten_token: The most recently ungotten token, or None.
    @type ungotten_token: (int, string) token tuple
    @ivar multiline: The current multiline level.  This value is increased
    by one every time a '(' delimiter is read, and decreased by one every time
    a ')' delimiter is read.
    @type multiline: int
    @ivar quoting: This variable is true if the tokenizer is currently
    reading a quoted string.
    @type quoting: bool
    @ivar eof: This variable is true if the tokenizer has encountered EOF.
    @type eof: bool
    @ivar delimiters: The current delimiter dictionary.
    @type delimiters: dict
    @ivar line_number: The current line number
    @type line_number: int
    @ivar filename: A filename that will be returned by the L{where} method.
    @type filename: string
    cCs�t|t�r3t|�}|dkr�d}q�nft|t�rlt|j��}|dkr�d}q�n-|dkr�|tjkr�d}q�d}n||_d|_	d|_
d|_t|_
t|_t|_d|_||_dS(s�Initialize a tokenizer instance.

        @param f: The file to tokenize.  The default is sys.stdin.
        This parameter may also be a string, in which case the tokenizer
        will take its input from the contents of the string.
        @type f: file or string
        @param filename: the name of the filename that the L{where} method
        will return.
        @type filename: string
        s<string>s<stdin>s<file>iiN(R#RRtNoneRtdecodetsyststdintfilet
ungotten_chartungotten_tokent	multilineR$tquotingteoft_DELIMITERSt
delimiterstline_numbertfilename(RtfRL((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyR�s*										cCs�|jdkrl|jr!d}q~|jjd�}|dkrKt|_q~|dkr~|jd7_q~n|j}d|_|S(s<Read a character from input.
        @rtype: string
        Ris
N(RDR?RHRCtreadR'RK(RR5((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt	_get_char�s				cCs|j|jfS(s�Return the current location in the input.

        @rtype: (string, int) tuple.  The first item is the filename of
        the input, the second is the current line number.
        (RLRK(R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytwhere�scCs%|jdk	rt�n||_dS(sEUnget a character.

        The unget buffer for characters is only one character large; it is
        an error to try to unget a character when the unget buffer is not
        empty.

        @param c: the character to unget
        @type c: string
        @raises UngetBufferFull: there is already an ungotten char
        N(RDR?R	(RR5((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt_unget_chars	cCsod}xbtrj|j�}|dkr]|dkr]|dksI|jr]|j|�|Sn|d7}q	WdS(s(Consume input until a non-whitespace character is encountered.

        The non-whitespace character is then ungotten, and the number of
        whitespace characters consumed is returned.

        If the tokenizer is in multiline mode, then newlines are whitespace.

        @rtype: int
        iRs	s
iN(R'RORFRQ(RtskippedR5((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytskip_whitespaces	
c
Cs�|jdk	rZ|j}d|_|j�r:|rW|SqZ|j�rS|rW|SqZ|Sn|j�}|r�|dkr�ttd�Sd}t}t}x�t	rA|j
�}|dks�||jkr�|dkr�|jr�t
jj�n|dkr�|tkr�|dkr.|jd7_|j�q�q�|dkrw|jdkrXt
jj�n|jd8_|j�q�q�|dkr�|js�t	|_t|_t}q�q�t|_t|_|j�q�q�|dkr�ttd�S|d	kr�x6|j
�}|dks|dkrPn||7}q�W|rJ|j|�tt|�S|dkr~|jrtt
jjd
��ntt�S|jr�|j�d}q�q�ttd�Sq�|}t}n
|j|�Png|jr�|dkr�|j
�}|dkr	t
jj�n|j�r�|j
�}|dkr<t
jj�n|j
�}	|dkrct
jj�n|j�ox|	j�s�t
jj�ntt|�dt|�d
t|	��}q�q4|dkr4t
jjd��q4nR|dkr4||7}t	}|j
�}|dks"|dkr4t
jj�q4n||7}q�W|dkr�|tkr�|jrxt
jjd
��nt}nt|||�S(sGet the next token.

        @param want_leading: If True, return a WHITESPACE token if the
        first character read is whitespace.  The default is False.
        @type want_leading: bool
        @param want_comment: If True, return a COMMENT token if the
        first token read is a comment.  The default is False.
        @type want_comment: bool
        @rtype: Token object
        @raises dns.exception.UnexpectedEnd: input ended prematurely
        @raises dns.exception.SyntaxError: input was badly formed
        iRRRiRRs
Rsunbalanced parenthesess\idi
snewline in quoted stringN(RER?RRRSR
RRR$R'RORJRGR+R,R-RRFR/t_QUOTING_DELIMITERSRIRRQRRR R.R0R1(
Rtwant_leadingtwant_commentttokenRRRRR5R6R7((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytget%s�		
	

					



		
	
	
	4
		cCs%|jdk	rt�n||_dS(s@Unget a token.

        The unget buffer for tokens is only one token large; it is
        an error to try to unget a token when the unget buffer is not
        empty.

        @param token: the token to unget
        @type token: Token object
        @raises UngetBufferFull: there is already an ungotten token
        N(RER?R	(RRW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytunget�s	cCs%|j�}|j�r!t�n|S(sLReturn the next item in an iteration.
        @rtype: (int, string)
        (RXRt
StopIteration(RRW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytnext�s	cCs|S(N((R((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyR;�scCsd|j�j�}|j�s3tjjd��n|jj�sWtjjd��nt|j�S(s|Read the next token and interpret it as an integer.

        @raises dns.exception.SyntaxError:
        @rtype: int
        sexpecting an identifiersexpecting an integer(	RXR8RR+R,R/RR.R1(RRW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytget_int�scCsA|j�}|dks$|dkr=tjjd|��n|S(s�Read the next token and interpret it as an 8-bit unsigned
        integer.

        @raises dns.exception.SyntaxError:
        @rtype: int
        ii�s#%d is not an unsigned 8-bit integer(R\R+R,R/(RR((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt	get_uint8�s
	cCsA|j�}|dks$|dkr=tjjd|��n|S(s�Read the next token and interpret it as a 16-bit unsigned
        integer.

        @raises dns.exception.SyntaxError:
        @rtype: int
        ii��s$%d is not an unsigned 16-bit integer(R\R+R,R/(RR((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
get_uint16�s
	cCs�|j�j�}|j�s3tjjd��n|jj�sWtjjd��nt|j�}|dks�|td�kr�tjjd|��n|S(s�Read the next token and interpret it as a 32-bit unsigned
        integer.

        @raises dns.exception.SyntaxError:
        @rtype: int
        sexpecting an identifiersexpecting an integeriIs$%d is not an unsigned 32-bit integer(	RXR8RR+R,R/RR.R(RRWR((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
get_uint32�s	cCsF|j�j�}|j�p'|j�s?tjjd��n|jS(s}Read the next token and interpret it as a string.

        @raises dns.exception.SyntaxError:
        @rtype: string
        sexpecting a string(RXR8RRR+R,R/R(RtoriginRW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt
get_string�scCs:|j�j�}|j�s3tjjd��n|jS(s�Read the next token and raise an exception if it is not an identifier.

        @raises dns.exception.SyntaxError:
        @rtype: string
        sexpecting an identifier(RXR8RR+R,R/R(RR`RW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytget_identifier
scCsC|j�}|j�s-tjjd��ntjj|j|�S(s�Read the next token and interpret it as a DNS name.

        @raises dns.exception.SyntaxError:
        @rtype: dns.name.Name objectsexpecting an identifier(RXRR+R,R/tnamet	from_textR(RR`RW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytget_namescCsD|j�}|j�s=tjjd|j|jf��n|jS(s�Read the next token and raise an exception if it isn't EOL or
        EOF.

        @raises dns.exception.SyntaxError:
        @rtype: string
        s expected EOL or EOF, got %d "%s"(RXR"R+R,R/RR(RRW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytget_eol!s		cCsF|j�j�}|j�s3tjjd��ntjj|j�S(Nsexpecting an identifier(	RXR8RR+R,R/tttlRdR(RRW((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pytget_ttl0sN(R
RRRARBR?RRORPRQRSR$RXRYR[t__next__R;R\R]R^R_RaRbReRfRh(((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyR>�s($					{		
						(RtioRRAt
dns.exceptionR+tdns.nametdns.ttlt_compatRRRR'RIRTRRRRRRR R,tDNSExceptionR	tobjectR
R>(((s1/usr/lib/python2.7/site-packages/dns/tokenizer.pyt<module>s2

o