ó
    Ö›‘h¿  ã                   ó‚   • S r SSKrSSKrSSKJrJr  SSKJrJrJ	r	J
r
  SSKJr   " S S\R                  5      rS rS	 rg)
z
Domain Name Server
é    N)ÚinternetÚservice)Ú	authorityÚdnsÚ	secondaryÚserver)Úusagec                   ó´   • \ rS rSr/ SQ/ SQ/ SQ/ SQ/r/ SQ/ SQ/ SQ/r\R                  " S	\R                  " 5       0S
9r	Sr
SrS rS rS rS rS rS rSrg)ÚOptionsé   )Ú	interfaceÚiÚ zThe interface to which to bind)ÚportÚpÚ53zThe port on which to listen)úresolv-confNNz6Override location of resolv.conf (implies --recursive))ú
hosts-fileNNz!Perform lookups with a hosts file)ÚcacheÚczEnable record caching)Ú	recursiveÚrzPerform recursive lookups)ÚverboseÚvzLog verboselyr   )Ú
optActionsNc                 óv   • [         R                  R                  U 5        SU S'   / U l        / U l        / U l        g )Nr   r   )r	   r   Ú__init__Ú	bindfilesÚ	zonefilesÚsecondaries©Úselfs    ÚUC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/names/tap.pyr   ÚOptions.__init__+   s3   € Ü�‰×Ñ˜tÔ$ØˆˆY‰ØˆŒØˆŒØˆÕó    c                 ó´   • [         R                  R                  U5      (       d  [        R                  " US-   5      eU R
                  R                  U5        g)z7Specify the filename of a Python syntax zone definitionú: No such fileN)ÚosÚpathÚexistsr	   Ú
UsageErrorr   Úappend©r"   Úfilenames     r#   Ú
opt_pyzoneÚOptions.opt_pyzone2   ó>   € ä�w‰w�~‰~˜h×'Ñ'Ü×"Ò" 8Ð.>Ñ#>Ó?Ð?Ø�‰×Ñ˜hÕ'r%   c                 ó´   • [         R                  R                  U5      (       d  [        R                  " US-   5      eU R
                  R                  U5        g)z6Specify the filename of a BIND9 syntax zone definitionr'   N)r(   r)   r*   r	   r+   r   r,   r-   s     r#   Úopt_bindzoneÚOptions.opt_bindzone8   r1   r%   c                 ó¦  • UR                  SS5      n[        U5      S:w  a  [        R                  " S5      eUS   R                  S5      n[        U5      S:X  a  US   [        R
                  4nO [        US   5      nUS   U4nU R                  R                  X2S   /45        g! [         a    [        R                  " SUS   < 35      ef = f)	zgAct as secondary for the specified domain, performing
zone transfers from the specified IP (IP/domain)
Ú/é   é   z-Argument must be of the form IP[:port]/domainr   Ú:z$Specify an integer port number, not N)
ÚsplitÚlenr	   r+   r   ÚPORTÚintÚ
ValueErrorr    r,   )r"   Ú	ip_domainÚargsÚaddressr   s        r#   Úopt_secondaryÚOptions.opt_secondary>   sÒ   € ð �‰˜s AÓ&ˆÜˆt‹9˜‹>Ü×"Ò"Ð#RÓSÐSØ�q‘'—-‘- Ó$ˆÜˆw‹<˜1ÓØ˜q‘z¤3§8¡8Ð,‰GðÜ˜7 1™:“�ð
 ˜q‘z 4Ð(ˆGØ×Ñ×Ñ °©7¨)Ð 4Õ5øô ó Ü×&Ò&Ø:¸7À1¹:¹.ÐIóð ðús   Á2B( Â((Cc                 ó   • U S==   S-  ss'   g)zIncrement verbosity levelr   r7   N© r!   s    r#   Úopt_verboseÚOptions.opt_verboseR   s   € àˆY‹˜1ÑŒr%   c                 óÌ  • U S   (       a  SU S'   / U l         / U l        U R                   H3  n U R                  R                  [        R
                  " U5      5        M5     U R                   H3  n U R                  R                  [        R                  " U5      5        M5     U R                   Hq  n[        R                  R                   " U6 nU R                   R                  U5        U R                  R                  U R                   S   R#                  5       5        Ms      [%        U S   5      U S'   g ! [         a/    [        R                  " 5         [        R                  " SU-   5      ef = f! [         a/    [        R                  " 5         [        R                  " SU-   5      ef = f! [&         a)    [        R                  " SR)                  U S   5      5      ef = f)Nr   Tr   zInvalid syntax in éÿÿÿÿr   zInvalid port: {!r})ÚsvcsÚzonesr   r,   r   ÚPySourceAuthorityÚ	ExceptionÚ	tracebackÚ	print_excr	   r+   r   ÚBindAuthorityr    r   ÚSecondaryAuthorityServiceÚfromServerAddressAndDomainsÚgetAuthorityr=   r>   Úformat)r"   ÚfÚsvcs      r#   ÚpostOptionsÚOptions.postOptionsV   sš  € Ø�×Ø $ˆD�ÑàˆŒ	ØˆŒ
Ø—”ˆAðAØ—
‘
×!Ñ!¤)×"=Ò"=¸aÓ"@ÖAñ  ð —”ˆAðAØ—
‘
×!Ñ!¤)×"9Ò"9¸!Ó"<Ö=ñ  ð ×!Ô!ˆAÜ×5Ñ5×QÒQÐSTÐUˆCØ�I‰I×Ñ˜SÔ!Ø�J‰J×Ñ˜dŸi™i¨™m×8Ñ8Ó:Ö;ñ "ð	NÜ˜t F™|Ó,ˆD�ŠLøô ó AÜ×#Ò#Ô%Ü×&Ò&Ð';¸aÑ'?Ó@Ð@ðAûô ó AÜ×#Ò#Ô%Ü×&Ò&Ð';¸aÑ'?Ó@Ð@ðAûô ó 	NÜ×"Ò"Ð#7×#>Ñ#>¸tÀF¹|Ó#LÓMÐMð	Nús#   ®/D8Á1/E4Ä&F0 Ä89E1Å49F-Æ03G#)r   r    rJ   r   rK   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚoptParametersÚoptFlagsr	   ÚCompletionsÚCompleteNetInterfacesÚcompDatarK   r   r   r/   r3   rB   rF   rW   Ú__static_attributes__rE   r%   r#   r   r      sz   † â@Ú:ò	
ò 	Hð
€Mò 	0Ú7Ú)ð€Hð × Ò Ø ×!<Ò!<Ó!>Ð?ñ€Hð €EØ€Iòò(ò(ò6ò(õNr%   r   c                 ó$  • SSK JnJnJn  / / pTU S   (       a!  UR	                  UR                  U S   S95        U S   (       a!  UR	                  UR                  U S   S95        U S   (       a!  UR	                  UR                  U S	   S
95        XE4$ )a	  
Build DNS resolver instances in an order which leaves recursive
resolving as a last resort.

@type config: L{Options} instance
@param config: Parsed command-line configuration

@return: Two-item tuple of a list of cache resovers and a list of client
    resolvers
r   )r   ÚclientÚhostsr   r   )r   r   )Úfiler   r   )Ú
resolvconf)Útwisted.namesr   rd   re   r,   ÚCacheResolverÚResolverÚcreateResolver)Úconfigr   rd   re   ÚcaÚcls         r#   Ú_buildResolversro   r   s‰   € ÷ 3Ñ2à�ˆØˆg‡Ø
�	‰	�%×%Ñ%¨f°YÑ.?Ð%Ð@ÔAØˆl×Ø
�	‰	�%—.‘. f¨\Ñ&:�.Ð;Ô<Øˆk×Ø
�	‰	�&×'Ñ'°6¸-Ñ3HÐ'ÐIÔJØˆ6€Mr%   c                 ó¬  • [        U 5      u  p[        R                  " U R                  XU S   5      n[        R
                  " U5      nSUl        [        R                  " 5       n[        R                  U4[        R                  U44 H#  u  pgU" U S   XpS   S9nUR                  U5        M%     U R                   H  n	U	R                  U5        M     U$ )Nr   r   r   r   )r   )ro   r   ÚDNSServerFactoryrK   r   ÚDNSDatagramProtocolÚnoisyr   ÚMultiServicer   Ú	TCPServerÚ	UDPServerÚsetServiceParentrJ   )
rl   rm   rn   rU   r   ÚretÚklassÚargÚsrV   s
             r#   ÚmakeServicer|   ‰   s¾   € Ü˜VÓ$�F€Bä×Ò §¡¨b°f¸YÑ6GÓH€AÜ×Ò Ó"€AØ€A„GÜ
×
Ò
Ó
 €CÜ ×*Ñ*¨AÐ.´×1CÑ1CÀQÐ0GÓH‰
ˆÙ�&˜‘. #¸Ñ1DÑEˆØ	×Ñ˜3Öñ Ið �{Œ{ˆØ×Ñ˜SÖ!ñ à€Jr%   )Ú__doc__r(   rN   Útwisted.applicationr   r   rh   r   r   r   r   Útwisted.pythonr	   r   ro   r|   rE   r%   r#   Ú<module>r€      s=   ðñ
ó 
Û ç 1ß ;Ó ;Ý  ô^Nˆe�m‰mô ^NòBó.r%   