
    ui>                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	rSSK
rSSKrSSKrSSKrSSKrSSKr " S S\R                   R"                  5      r " S S5      rg)z
DNS Zones.    Nc                       \ rS rSrSrSrg)UnknownOrigin%   zUnknown origin N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       C/home/kodi/.kodi/addons/script.module.dnspython/lib/dns/zonefile.pyr   r   %   s    r   r   c                   @    \ rS rSrSrSS jrS rS rS rS r	S r
S	rg
)Reader)   z(Read a DNS zone file into a transaction.c                    Xl         UR                  R                  5       u  U l        U l        nU R                  U l        SU l        SU l        SU l        SU l	        U R
                  U l
        X l        X0l        / U l        S U l        X@l        g )Nr   F)tokmanagerorigin_informationzone_origin
relativizecurrent_originlast_ttllast_ttl_knowndefault_ttldefault_ttl_known	last_namezone_rdclasstxnsaved_statecurrent_fileallow_include)selfr   rdclassr   r"   _s         r   __init__Reader.__init__-   s    KK**, 	/	4?A"..#!&,,# *r   c                 h     U R                   R                  5       nUR                  5       (       a  g M2  )N)r   getis_eol_or_eof)r#   tokens     r   	_eat_lineReader._eat_line=   s+    HHLLNE""$$ r   c           	      	   U R                   c  [        eU R                  R                  SS9nUR	                  5       (       d+  U R                  R                  XR                   5      U l        OKU R                  R                  5       nUR                  5       (       a  gU R                  R                  U5        U R                  nUR                  U R                  5      (       d  U R                  5         gU R                  (       a  UR                  U R                  5      nU R                  R                  5       nUR                  5       (       d  [        R                  R                   eSn [        R"                  R%                  UR&                  5      nX0l        SU l        U R                  R                  5       nUR                  5       (       d  [        R                  R                   e  [        R2                  R%                  UR&                  5      nU R                  R                  5       nUR                  5       (       d  [        R                  R                   e X@R6                  :w  a  [        R                  R!                  S5      e [        R8                  R%                  UR&                  5      n [        R:                  R%                  XEU R                  U R                   U R                  U R                  5      nU R.                  (       dE  U[        R8                  RD                  :X  a'  URF                  U l        SU l        Uc  URF                  nUc  [        R                  R!                  S5      eU RH                  RK                  X#U5        g! [        R"                  R,                   aA    U R.                  (       a  U R0                  n GNU R*                  (       a  U R(                  n GNf = f! [        R                  R                    a    e [4         a    U R6                  n GNf = f! [4         a-    [        R                  R!                  SUR&                  -  5      ef = f! [        R                  R                    a    e [4         a\    [<        R>                  " 5       SS u  px[        R                  R!                  SRA                  [C        U5      [C        U5      5      5      ef = f)	z&Process one line from a DNS zone file.NT)want_leadingRR class is not zone's classunknown rdatatype '%s'   zcaught exception {}: {}Missing default TTL value)&r   r   r   r)   is_whitespaceas_namer   r*   ungetis_subdomainr   r,   r   is_identifierdns	exceptionSyntaxErrorttl	from_textvaluer   r   BadTTLr   r   
rdataclass	Exceptionr   	rdatatyperdatasysexc_infoformatstrSOAminimumr   add)	r#   r+   namer<   r$   rdtyperdtyvas	            r   _rr_lineReader._rr_lineC   s    &$/""$$!XX--e5H5HIDNHHLLNE""$$HHNN5!~~  !1!122NN????4#3#34D""$$--+++ 	$''##EKK0CM"&DHHLLNE&&((mm/// )	(nn..u{{;GHHLLNE&&((mm/// ) '''--++,JKK	8]],,U[[9F	D$$Wdhh%)%8%8$//%)%5%57B  %%&CMM4E4E*E  "zzD%)D"{jj ;--++,GHHT#q ww~~ 	$%%&&$$mm		$ }}(( 	 	(''G	(  	8--++(5;;68 8	8 }}(( 	 	D ||~bq)HR--++)00R#b'BD D	DsF   -A?N .A2O< )P7 :AQ1 ;O9O98O9<4P43P477Q.1BS5c                 2   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      nUR                  U5      nU(       a  UR                  5       u  pgpn
US:X  a  SnUR                  U5      nU(       a  UR                  5       u  pgnUS:X  a  SnSn	Sn
UR                  U5      nU(       a  UR                  5       u  pgpUS:X  a  SnSn
U(       d  U(       d  U(       d
  SnSnSnSn	Sn
W
S:w  a
  [	        5       eWWWW	U
4$ )Nz"^.*\$({(\+|-?)(\d+),(\d+),(.)}).*$z^.*\$({(\+|-?)(\d+)}).*$z^.*\$({(\+|-?)(\d+),(\d+)}).*$ +r   d)recompilematchgroupsNotImplementedError)r#   sideis_generate1is_generate2is_generate3g1modsignoffsetwidthbaseg2g3s                r   _parse_modifyReader._parse_modify   s    zz"GHzz"=>zz"CD %-/YY[*Cvdrz% "		CvrzED%')yy{$CvrzDbBCDFED3;%''D&%--r   c           
      h   U R                   c  [        eU R                  R                  5       n [        R
                  R                  UR                  5      u  p#nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e  UR                  nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e  [        R                  R                  UR                  5      nX`l        SU l        U R                  R                  5       nUR                  5       (       d  [        R                  R                  e  [        R$                  R                  UR                  5      nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e XpR&                  :w  a  [        R                  R                  S5      e [        R(                  R                  UR                  5      nU R                  R                  5       nUR                  5       (       d  [        R                  R                  e UR                  n	U R+                  U5      u  ppnU R+                  U	5      u  nnnnn[-        X#S-   U5       GH  nUS:X  a  U[/        U5      -   nOUS:X  a  U[/        U5      -
  nUS:X  a  U[/        U5      -
  nOUS:X  a  U[/        U5      -   n[1        W5      R3                  [/        U5      5      n[1        W5      R3                  [/        U5      5      nUR5                  S	U
-  U5      nU	R5                  S	U-  U5      n[        R6                  R                  UU R                   U R                  R8                  5      U l        U R:                  nUR=                  U R>                  5      (       d  U RA                  5           gU RB                  (       a  URC                  U R>                  5      n [        RD                  R                  XxUU R                   U RB                  U R>                  5      nU RJ                  RM                  UWU5        GM     g! [         a    [        R                  R                  ef = f! [         a    [        R                  R                  ef = f! [        R                  R                   a    U R                  (       d0  U R                   (       d  [        R                  R                  S5      eU R                   (       a  U R"                  n GNU R                  (       a  U R                  n GN%f = f! [        R                  R                   a    [        R                  R                  e[         a    U R&                  n GNf = f! [         a-    [        R                  R                  SUR                  -  5      ef = f! [        R                  R                   a    e [         aU    [F        RH                  " 5       SS
 u  nn[        R                  R                  S[1        U5      < S[1        U5      < 35      ef = f)zHProcess one line containing the GENERATE statement from a DNS
zone file.NTr3   r0   r1      rT   -z$%sr2   zcaught exception z: )'r   r   r   r)   r9   granger=   r>   r8   r:   r;   rA   r<   r   r   r?   r   r   r@   r   rB   rg   rangeintrG   zfillreplacerK   
idna_codecr   r7   r   r,   r   rC   rD   rE   r   rJ   )r#   r+   startstopsteplhsr<   r$   rL   rhslmodlsignloffsetlwidthr%   rmodrsignroffsetrwidthilindexrindexlzfindexrzfindexrK   rC   rM   rN   rO   s                                r   _generate_lineReader._generate_line   s(    &	, #

 4 4U[[ AEHHLLNE&&((mm/// )	,++CHHLLNE&&((mm/// )	$''##EKK0CM"&DHHLLNE&&((mm/// )	(nn..u{{;GHHLLNE&&((mm/// ) '''--++,JKK	9]],,U[[9FHHLLNE&&((mm/// ) kk +/*<*<S*A'Wa*.*<*<S*A'eWfauQh-A |S\)#S\)|S\)#S\)6{((V5H6{((V5H;;u~x8DKK9E XX//d6I6I040C0CEDN>>D$$T%5%566 t'7'78DYY((%)-)<)<doo)-)9)9;  HHLLsB'[ .q  	,--+++	,  	,--+++	, ww~~ 	$''4+A+Amm//0KLL%%&&$$mm	$ }}(( 	,--+++ 	(''G	(  	9--++,D,1KK-8 9 9	9V ==,,  D <<>"1-Rmm//14R#b'1C D DDsb   A5R3 &AS =A?T >A2V&  A2W: AX43%S%T A<V#V#"V#&AW76W7:7X14A=Z1c           
      b
     U R                   R                  SS5      nUR                  5       (       a  U R                  b  U R                  R	                  5         [        U R                  5      S:  aN  U R                  R                  S5      u  U l         U l        U l	        U l        U l
        U l        U l        U l        M  gUR                  5       (       a  M  UR                  5       (       a  U R                   R!                  5         GM
  UR"                  S   S:X  GaN  UR"                  R%                  5       nUS:X  a  U R                   R                  5       nUR'                  5       (       d  [(        R*                  R-                  S5      e[(        R.                  R1                  UR"                  5      U l        SU l        U R                   R!                  5         GOUS:X  a~  U R                   R3                  5       U l        U R                   R!                  5         U R4                  c  U R                  U l        U R6                  R9                  U R                  5        GOUS	:X  Ga  U R:                  (       Ga  U R                   R                  5       nUR"                  nU R                   R                  5       nUR'                  5       (       ad  [(        R<                  R1                  UR"                  U R                  U R                   R>                  5      nU R                   R!                  5         O@URA                  5       (       d  [(        R*                  R-                  S
5      eU R                  nU R                  RC                  U R                   U R                  U R                  U R                  U R                  U R                  U R                  U R                  45        [E        US5      U l        [(        RF                  RI                  U R                  U5      U l         X@l        O<US:X  a  U RK                  5         O%[(        R*                  R-                  SU-   S-   5      eGMl  U R                   RM                  U5        U RO                  5         GM  ! [(        R*                  R,                   at  nU R                   RQ                  5       u  p6Uc  Sn[(        R*                  R-                  SX6U4-  5      n[R        RT                  " 5       S   nURW                  U5      SeSnAff = f)zRead a DNS zone file and build a zone object.

@raises dns.zone.NoSOA: No SOA RR was found at the zone origin
@raises dns.zone.NoNS: No NS RRset was found at the zone origin
TNr   $z$TTLzbad $TTLz$ORIGINz$INCLUDEzbad origin in $INCLUDErz	$GENERATEzUnknown zone file directive ''zsyntax errorz	%s:%d: %sr2   ),r   r)   is_eofr!   closelenr    popr   r   r   r   r   r   is_eol
is_commentget_eolr>   upperr8   r9   r:   r;   r<   r=   get_namer   r   _set_originr"   rK   rq   r*   appendopen	tokenizer	Tokenizerr   r6   rP   whererD   rE   with_traceback)	r#   r+   cfilename
new_origindetailline_numberextbs	            r   readReader.read;  s   O	2T40<<>>((4))//14++,q0 483C3C3G3G3K1,*,)/ \\^^%%''HH$$&[[^s*))+AF{ $$2244"%--";";J"GG+.77+<+<U[[+I(15.((*i.2hh.?.?.A+((*++3/3/B/BD,,,T-@-@AjT-?-?-? $#(;; $ ..00 # 2 25;;373F3F37883F3F!H ' !HH,,.!&!4!4!6!6"%--";"; 8#: : *.)<)<J((//151D1D15151B1B15151D1D151A1A151G1G1I J -13,?)#&==#:#:4;L;L;C$E.8+k)++-!mm77;a?#EG Gu%M N }}(( 	2&*hhnn&6#X~'**xf==?B"B##B'T1	2s    C R OR T.:A/T))T.)r"   r!   r   r   r   r   r   r   r   r    r   r   r   r   N)F)r   r   r	   r
   r   r&   r,   rP   rg   r   r   r   r   r   r   r   r   )   s)    2+ Y$v&.Ps(jV2r   r   )r   rV   rD   dns.exceptionr9   dns.namedns.nodedns.rdataclassdns.rdatatype	dns.rdatadns.rdtypes.ANY.SOA	dns.rrsetdns.tokenizerdns.transactiondns.ttl
dns.granger:   DNSExceptionr   r   r   r   r   <module>r      sV   $  	 
            CMM.. h2 h2r   