§
    Ètºf¿  ã                   ó€   — d Z ddlZddlZddlmZmZ ddlmZmZm	Z	m
Z
 ddlmZ  G d„ dej        ¦  «        Zd„ Zd	„ ZdS )
z
Domain Name Server
é    N)ÚinternetÚservice)Ú	authorityÚdnsÚ	secondaryÚserver)Úusagec                   ó¬   — e Zd Zg d¢g d¢g d¢g d¢gZg d¢g d¢g d¢gZ ej        d ej        ¦   «         i¬	¦  «        Zd
Z	d
Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd
S )Ú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                 óx   — t           j                             | ¦  «         d| d<   g | _        g | _        g | _        d S )Nr   r   )r	   r   Ú__init__Ú	bindfilesÚ	zonefilesÚsecondaries©Úselfs    úP/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/names/tap.pyr   zOptions.__init__+   s=   € ÝŒ×Ò˜tÑ$Ô$Ð$ØˆˆY‰ØˆŒØˆŒØˆÔÐÐó    c                 ó¦   — t           j                             |¦  «        st          j        |dz   ¦  «        ‚| j                             |¦  «         dS )z7Specify the filename of a Python syntax zone definitionú: No such fileN)ÚosÚpathÚexistsr	   Ú
UsageErrorr   Úappend©r!   Úfilenames     r"   Ú
opt_pyzonezOptions.opt_pyzone2   óL   € åŒw�~Š~˜hÑ'Ô'ð 	@ÝÔ" 8Ð.>Ñ#>Ñ?Ô?Ð?ØŒ×Ò˜hÑ'Ô'Ð'Ð'Ð'r#   c                 ó¦   — t           j                             |¦  «        st          j        |dz   ¦  «        ‚| j                             |¦  «         dS )z6Specify the filename of a BIND9 syntax zone definitionr%   N)r&   r'   r(   r	   r)   r   r*   r+   s     r"   Úopt_bindzonezOptions.opt_bindzone8   r.   r#   c                 óä  — |                      dd¦  «        }t          |¦  «        dk    rt          j        d¦  «        ‚|d                               d¦  «        }t          |¦  «        dk    r|d         t          j        f}nL	 t          |d         ¦  «        }n+# t          $ r t          j        d|d         ›�¦  «        ‚w xY w|d         |f}| j         	                    ||d         gf¦  «         dS )	zwAct 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_secondaryzOptions.opt_secondary>   sý   € ð �Š˜s AÑ&Ô&ˆÝˆt‰9Œ9˜Š>ˆ>ÝÔ"Ð#RÑSÔSÐSØ�q”'—-’- Ñ$Ô$ˆÝˆw‰<Œ<˜1ÒÐØ˜q”z¥3¤8Ð,ˆGˆGðÝ˜7 1œ:‘”��øÝð ð ð ÝÔ&ØI¸7À1¼:ÐIÐIñô ð ðøøøð ˜q”z 4Ð(ˆGØÔ×Ò ¨4°¬7¨)Ð 4Ñ5Ô5Ð5Ð5Ð5s   ÂB Â(C c                 ó&   — | dxx         dz  cc<   dS )zIncrement verbosity levelr   r3   N© r    s    r"   Úopt_verbosezOptions.opt_verboseR   s   € àˆYˆˆŒ˜1Ñˆˆ‰ˆˆr#   c                 ó|  — | d         rd| d<   g | _         g | _        | j        D ]g}	 | j                             t	          j        |¦  «        ¦  «         Œ0# t          $ r+ t          j        ¦   «          t          j
        d|z   ¦  «        ‚w xY w| j        D ]g}	 | j                             t	          j        |¦  «        ¦  «         Œ0# t          $ r+ t          j        ¦   «          t          j
        d|z   ¦  «        ‚w xY w| j        D ]f}t          j        j        |Ž }| j                              |¦  «         | j                             | j         d                              ¦   «         ¦  «         Œg	 t%          | d         ¦  «        | d<   d S # t&          $ r. t          j
        d                     | d         ¦  «        ¦  «        ‚w xY w)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ÚgetAuthorityr9   r:   Úformat)r!   ÚfÚsvcs      r"   ÚpostOptionszOptions.postOptionsV   sõ  € Ø�Ôð 	%Ø $ˆD�ÑàˆŒ	ØˆŒ
Ø”ð 	Að 	AˆAðAØ”
×!Ò!¥)Ô"=¸aÑ"@Ô"@ÑAÔAÐAÐAøÝð Að Að AÝÔ#Ñ%Ô%Ð%ÝÔ&Ð';¸aÑ'?Ñ@Ô@Ð@ðAøøøð ”ð 	Að 	AˆAðAØ”
×!Ò!¥)Ô"9¸!Ñ"<Ô"<Ñ=Ô=Ð=Ð=øÝð Að Að AÝÔ#Ñ%Ô%Ð%ÝÔ&Ð';¸aÑ'?Ñ@Ô@Ð@ðAøøøð Ô!ð 	<ð 	<ˆAÝÔ5ÔQÐSTÐUˆCØŒI×Ò˜SÑ!Ô!Ð!ØŒJ×Ò˜dœi¨œm×8Ò8Ñ:Ô:Ñ;Ô;Ð;Ð;ð	NÝ˜t Fœ|Ñ,Ô,ˆD�‰LˆLˆLøÝð 	Nð 	Nð 	NÝÔ"Ð#7×#>Ò#>¸tÀF¼|Ñ#LÔ#LÑMÔMÐMð	Nøøøs#   ¦,AÁ5BÂ,CÃ5C7Å)F Æ8F;)Ú__name__Ú
__module__Ú__qualname__ÚoptParametersÚoptFlagsr	   ÚCompletionsÚCompleteNetInterfacesÚcompDatarE   r   r   r-   r0   r>   rA   rQ   r@   r#   r"   r   r      s  € € € € € à@Ð@Ð@Ø:Ð:Ð:ð	
ð 	
ð 	
ð 	HÐGÐGð
€Mð 	0Ð/Ð/Ø7Ð7Ð7Ø)Ð)Ð)ð€Hð !ˆuÔ ØÐ!< Ô!<Ñ!>Ô!>Ð?ðñ ô €Hð €EØ€Iðð ð ð(ð (ð (ð(ð (ð (ð6ð 6ð 6ð(ð ð ðNð Nð Nð Nð Nr#   r   c                 óp  — ddl m}m}m} g g }}| d         r/|                     |                     | d         ¬¦  «        ¦  «         | d         r/|                     |                     | d         ¬¦  «        ¦  «         | d         r/|                     |                     | d	         ¬
¦  «        ¦  «         ||fS )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   r[   r\   r*   ÚCacheResolverÚResolverÚcreateResolver)Úconfigr   r[   r\   ÚcaÚcls         r"   Ú_buildResolversrf   r   sÑ   € ð 3Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2à�ˆ€BØˆg„ð BØ
�	Š	�%×%Ò%¨f°YÔ.?Ð%Ñ@Ô@ÑAÔAÐAØˆlÔð =Ø
�	Š	�%—.’. f¨\Ô&:�.Ñ;Ô;Ñ<Ô<Ð<ØˆkÔð KØ
�	Š	�&×'Ò'°6¸-Ô3HÐ'ÑIÔIÑJÔJÐJØˆrˆ6€Mr#   c                 óª  — t          | ¦  «        \  }}t          j        | j        ||| d         ¦  «        }t	          j        |¦  «        }d|_        t          j        ¦   «         }t          j
        |ft          j        |ffD ]4\  }} || d         || d         ¬¦  «        }|                     |¦  «         Œ5| j        D ]}	|	                     |¦  «         Œ|S )Nr   r   r   r   )r   )rf   r   ÚDNSServerFactoryrE   r   ÚDNSDatagramProtocolÚnoisyr   ÚMultiServicer   Ú	TCPServerÚ	UDPServerÚsetServiceParentrD   )
rc   rd   re   rO   r   ÚretÚklassÚargÚsrP   s
             r"   ÚmakeServicers   ‰   sà   € Ý˜VÑ$Ô$�F€BˆåÔ ¤¨b°"°f¸YÔ6GÑHÔH€AÝÔ Ñ"Ô"€AØ€A„GÝ
Ô
Ñ
 Ô
 €CÝ Ô*¨AÐ.µÔ1CÀQÐ0GÐHð  ð  ‰
ˆˆsØˆE�&˜”. #°¸Ô1DÐEÑEÔEˆØ	×Ò˜3ÑÔÐÐØŒ{ð "ð "ˆØ×Ò˜SÑ!Ô!Ð!Ð!Ø€Jr#   )Ú__doc__r&   rH   Útwisted.applicationr   r   r_   r   r   r   r   Útwisted.pythonr	   r   rf   rs   r@   r#   r"   ú<module>rw      sÙ   ðð
ð ð 
€	€	€	Ø Ð Ð Ð à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø  Ð  Ð  Ð  Ð  Ð  ð^Nð ^Nð ^Nð ^Nð ^NˆeŒmñ ^Nô ^Nð ^NðBð ð ð.ð ð ð ð r#   