a
    a                     @   s   d dl mZmZ G dd dejZG dd dejZG dd dejZG dd	 d	ejZG d
d dejZG dd dejZ	G dd dejZ
G dd dejZG dd dejZdS )    )	dnsserverdnspc                       s(   e Zd Zddejdf fdd	Z  ZS )ARecord     r   c                    sF   t t|   tj| _||B | _|| _|| _|d d  | _	| j	| _
d S N)superr   __init__r   Z
DNS_TYPE_AwTypedwFlagsdwSerialdwTtlSecondsZ_ip_addrdata)selfZip_addrserialttlrank	node_flag	__class__ 1/usr/lib/python3/dist-packages/samba/dnsserver.pyr	      s    
zARecord.__init____name__
__module____qualname__r   DNS_RANK_ZONEr	   __classcell__r   r   r   r   r      s   r   c                       s(   e Zd Zddejdf fdd	Z  ZS )
AAAARecordr   r   r   c                    sF   t t|   tj| _||B | _|| _|| _|d d  | _	| j	| _
d S r   )r   r   r	   r   ZDNS_TYPE_AAAAr
   r   r   r   Z	_ip6_addrr   )r   Zip6_addrr   r   r   r   r   r   r   r	   )   s    
zAAAARecord.__init__r   r   r   r   r   r   '   s   r   c                       s(   e Zd Zddejdf fdd	Z  ZS )	PTRRecordr   r   r   c                    s^   t t|   tj| _||B | _|| _|| _|d d  | _	t
 }| j	|_t||_|| _d S r   )r   r   r	   r   ZDNS_TYPE_PTRr
   r   r   r   Z_ptrr   DNS_RPC_NAMEstrlenr   )r   Zptrr   r   r   r   Zptr_namer   r   r   r	   6   s    

zPTRRecord.__init__r   r   r   r   r   r   4   s   r   c                       s(   e Zd Zddejdf fdd	Z  ZS )CNameRecordr   r   r   c                    s^   t t|   tj| _||B | _|| _|| _|d d  | _	t
 }| j	|_t||_|| _d S r   )r   r#   r	   r   ZDNS_TYPE_CNAMEr
   r   r   r   Z_cnamer   r    r!   r"   r   )r   Zcnamer   r   r   r   Z
cname_namer   r   r   r	   F   s    

zCNameRecord.__init__r   r   r   r   r   r#   D   s   r#   c                       s(   e Zd Zddejdf fdd	Z  ZS )NSRecordr   r   r   c                    s^   t t|   tj| _||B | _|| _|| _|d d  | _	t
 }| j	|_t||_|| _d S r   )r   r$   r	   r   ZDNS_TYPE_NSr
   r   r   r   Z_dns_serverr   r    r!   r"   r   )r   Z
dns_serverr   r   r   r   nsr   r   r   r	   V   s    

zNSRecord.__init__r   r   r   r   r   r$   T   s   r$   c                       s(   e Zd Zddejdf fdd	Z  ZS )MXRecordr   r   r   c                    sh   t t|   tj| _||B | _|| _|| _|d d  | _	t
 }||_| j	|j_t||j_|| _d S r   )r   r&   r	   r   ZDNS_TYPE_MXr
   r   r   r   Z_mail_serverr   ZDNS_RPC_RECORD_NAME_PREFERENCEZwPreferenceZnameExchanger!   r"   r   )r   Zmail_serverZ
preferencer   r   r   r   Zmxr   r   r   r	   f   s    

zMXRecord.__init__r   r   r   r   r   r&   d   s   r&   c                       s2   e Zd Zddddddejejf fdd	Z  ZS )	SOARecordr   r   iX  iQ i  c                    s   t t|   tj| _|	|
B | _|| _|| _|d d  | _	|d d  | _
t }||_||_||_||_||_| j	|j_t||j_| j
|j_t||j_|| _d S r   )r   r'   r	   r   ZDNS_TYPE_SOAr
   r   r   r   Z_mnameZ_rnamer   ZDNS_RPC_RECORD_SOAZ
dwSerialNoZ	dwRefreshZdwRetryZdwExpireZdwMinimumTtlZNamePrimaryServerr!   r"   ZZoneAdministratorEmailr   )r   ZmnameZrnamer   ZrefreshZretryZexpireZminimumr   r   r   Zsoar   r   r   r	   w   s$    


zSOARecord.__init__)r   r   r   r   r   ZDNS_RPC_FLAG_AUTH_ZONE_ROOTr	   r   r   r   r   r   r'   u   s   
r'   c                       s,   e Zd Zddddejdf fdd	Z  ZS )	SRVRecordr   d   r   r   c	           
         st   t t|   tj| _||B | _|| _|| _|d d  | _	t
 }	||	_||	_||	_| j	|	j_t||	j_|	| _d S r   )r   r(   r	   r   ZDNS_TYPE_SRVr
   r   r   r   Z_targetr   ZDNS_RPC_RECORD_SRVZ	wPriorityZwWeightZwPortZ
nameTargetr!   r"   r   )
r   targetZportZpriorityZweightr   r   r   r   Zsrvr   r   r   r	      s    

zSRVRecord.__init__r   r   r   r   r   r(      s   r(   c                       s(   e Zd Zddejdf fdd	Z  ZS )	TXTRecordr   r   r   c           
         s   t t|   tj| _||B | _|| _|| _g | _	|D ]}| j	
|d d   q6g }| j	D ]&}t }||_t||_|
| qZt }	t||	_||	_|	| _d S r   )r   r+   r	   r   ZDNS_TYPE_TXTr
   r   r   r   Z_slistappendr   r    r!   r"   ZDNS_RPC_RECORD_STRINGcountr   )
r   Zslistr   r   r   r   snamesnameZtxtr   r   r   r	      s$    



zTXTRecord.__init__r   r   r   r   r   r+      s   r+   N)Zsamba.dcerpcr   r   ZDNS_RPC_RECORDr   r   r   r#   r$   r&   r'   r(   r+   r   r   r   r   <module>   s   