HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/twisted/names/__pycache__/tap.cpython-38.pyc
U


W[��@s�dZddlZddlZddlmZddlmZddlmZm	Z	ddlm
Z
ddlmZddlmZGd	d
�d
ej
�Z
dd�Zd
d�ZdS)z
Domain Name Server
�N)�usage)�dns)�internet�service)�server)�	authority)�	secondaryc@s�eZdZddddgddddgd	d
d
dgdd
d
d
ggZdddgdddgdddggZejde��id�Zd
Z	d
Z
dd�Zdd�Zdd�Z
dd�Zd d!�Zd"d#�Zd
S)$�Options�	interface�i�zThe interface to which to bind�port�pZ53zThe port on which to listen�resolv-confNz6Override location of resolv.conf (implies --recursive)�
hosts-filez!Perform lookups with a hosts file�cache�czEnable record caching�	recursive�rzPerform recursive lookups�verbose�vz
Log verbosely)Z
optActionscCs*tj�|�d|d<g|_g|_g|_dS)Nrr)rr	�__init__�	bindfiles�	zonefiles�secondaries��self�r�3/usr/lib/python3/dist-packages/twisted/names/tap.pyr)s
zOptions.__init__cCs*tj�|�st�|d��|j�|�dS)z7Specify the filename of a Python syntax zone definition�: No such fileN)�os�path�existsr�
UsageErrorr�append�r�filenamerrr�
opt_pyzone1szOptions.opt_pyzonecCs*tj�|�st�|d��|j�|�dS)z6Specify the filename of a BIND9 syntax zone definitionrN)r r!r"rr#rr$r%rrr�opt_bindzone7szOptions.opt_bindzonecCs�|�dd�}t|�dkr"t�d��|d�d�}t|�dkrL|dtjf}nFzt|d�}Wn(tk
r�t�d|df��YnX|d|f}|j�	||dgf�dS)	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 %rN)
�split�lenrr#rZPORT�int�
ValueErrorrr$)rZ	ip_domain�argsZaddressr
rrr�
opt_secondary>s
�
zOptions.opt_secondarycCs|dd7<dS)zIncrement verbosity levelrr*Nrrrrr�opt_verboseRszOptions.opt_verbosec	Cs6|drd|d<g|_g|_|jD]F}z|j�t�|��Wq"tk
rft��t	�
d|��Yq"Xq"|jD]F}z|j�t�|��Wqptk
r�t��t	�
d|��YqpXqp|j
D]2}tjj|�}|j�|�|j�|jd���q�zt|d�|d<Wn*tk
�r0t	�
d|df��YnXdS)NrTrzInvalid syntax in ���r
zInvalid port: %r)�svcs�zonesrr$rZPySourceAuthority�	Exception�	traceback�	print_excrr#rZ
BindAuthorityrrZSecondaryAuthorityServiceZfromServerAddressAndDomainsZgetAuthorityr/r0)r�f�svcrrr�postOptionsWs0


zOptions.postOptions)�__name__�
__module__�__qualname__Z
optParametersZoptFlagsrZCompletionsZCompleteNetInterfacesZcompDatar6rrr'r(r2r3r<rrrrr	s,

�
�	�
�r	cCs�ddlm}m}m}gg}}|dr<|�|j|dd��|drZ|�|j|dd��|drx|�|j|d	d
��||fS)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)�clientr�hostsrr)rr)�filerr)Z
resolvconf)�
twisted.namesr@rrAr$Z
CacheResolverZResolverZcreateResolver)�configr@rrA�ca�clrrr�_buildResolversss
rGc
Cs�t|�\}}t�|j|||d�}t�|�}d|_t��}t	j
|ft	j|ffD](\}}||d||dd�}|�|�qN|j
D]}	|	�|�q~|S)Nrrr
r
)r
)rGrZDNSServerFactoryr6rZDNSDatagramProtocolZnoisyrZMultiServicerZ	TCPServerZ	UDPServerZsetServiceParentr5)
rDrErFr:rZret�klass�arg�sr;rrr�makeService�s

rK)�__doc__r r8Ztwisted.pythonrrCrZtwisted.applicationrrrrrr	rGrKrrrr�<module>s`