Your IP : 216.73.216.196


Current Path : /opt/alt/python37/lib64/python3.7/site-packages/twisted/names/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/site-packages/twisted/names/__pycache__/tap.cpython-37.pyc

B

:��]��@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 listenzresolv-confNz6Override location of resolv.conf (implies --recursive)z
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�D/opt/alt/python37/lib64/python3.7/site-packages/twisted/names/tap.pyr)s
zOptions.__init__cCs*tj�|�st�|d��|j�|�dS)z7Specify the filename of a Python syntax zone definitionz: 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 definitionz: No such fileN)rrrrrrr )rr!rrr�opt_bindzone7szOptions.opt_bindzonecCs�|�dd�}t|�dkr"t�d��|d�d�}t|�dkrL|dtjf}nFyt|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�lenrrrZPORT�int�
ValueErrorrr )rZ	ip_domain�args�addressr
rrr�
opt_secondary>s
zOptions.opt_secondarycCs|dd7<dS)zIncrement verbosity levelrr%Nr)rrrr�opt_verboseRszOptions.opt_verbosec	CsB|drd|d<g|_g|_xP|jD]F}y|j�t�|��Wq$tk
rht��t	�
d|��Yq$Xq$WxP|jD]F}y|j�t�|��Wqvtk
r�t��t	�
d|��YqvXqvWx<|j
D]2}tjj|�}|j�|�|j�|jd���q�Wyt|d�|d<Wn*tk
�r<t	�
d|df��YnXdS)Nzresolv-confTrzInvalid syntax in ���r
zInvalid port: %r)�svcs�zonesrr rZPySourceAuthority�	Exception�	traceback�	print_excrrrZ
BindAuthorityrrZSecondaryAuthorityServiceZfromServerAddressAndDomainsZgetAuthorityr*r+)r�f�svcrrr�postOptionsWs0zOptions.postOptions)�__name__�
__module__�__qualname__Z
optParametersZoptFlagsrZCompletionsZCompleteNetInterfacesZcompDatar2rrr"r#r.r/r8rrrrr	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)rz
hosts-file)�filerzresolv-conf)Z
resolvconf)�
twisted.namesr<rr=r Z
CacheResolverZResolverZcreateResolver)�configr<rr=�ca�clrrr�_buildResolversss
rCc
Cs�t|�\}}t�|j|||d�}t�|�}d|_t��}x@t	j
|ft	j|fgD](\}}||d||dd�}|�|�qPWx|j
D]}	|	�|�q�W|S)Nrrr
r
)r
)rCrZDNSServerFactoryr2rZDNSDatagramProtocolZnoisyrZMultiServicerZ	TCPServerZ	UDPServerZsetServiceParentr1)
r@rArBr6r�ret�klass�arg�sr7rrr�makeService�s
rH)�__doc__rr4Ztwisted.pythonrr?rZtwisted.applicationrrrrrr	rCrHrrrr�<module>s`