ó
4¨ûVc           @   sb   d  Z  d d l m Z m Z d d l m Z m Z d d l m Z m	 Z	 d e f d „  ƒ  YZ
 d S(   s    Tests for samba.dcerpc.dnsserveriÿÿÿÿ(   t   dnspt	   dnsserver(   t   RpcInterfaceTestCaset   env_get_var_value(   t   ARecordt   NSRecordt   DnsserverTestsc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sf   t  t |  ƒ j ƒ  t d ƒ |  _ t d ƒ j ƒ  |  _ t j d |  j |  j ƒ  |  j	 ƒ  ƒ |  _
 d  S(   Nt	   SERVER_IPt   REALMs   ncacn_ip_tcp:%s[sign](   t   superR   t   setUpR   t   servert   lowert   zoneR   t   get_loadparmt   get_credentialst   conn(   t   self(    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyR
      s    	c         C   s»   |  j  j t j d |  j d  d ƒ \ } } |  j t j | ƒ |  j  j t j d |  j d  d ƒ \ } } |  j t j	 | ƒ |  j  j t j
 d |  j d  d ƒ \ } } |  j t j | ƒ d  S(   Ni    t
   ServerInfo(   R   t   DnssrvQuery2R   t   DNS_CLIENT_VERSION_W2KR   t   Nonet   assertEqualst   DNSSRV_TYPEID_SERVER_INFO_W2Kt   DNS_CLIENT_VERSION_DOTNETt    DNSSRV_TYPEID_SERVER_INFO_DOTNETt   DNS_CLIENT_VERSION_LONGHORNt   DNSSRV_TYPEID_SERVER_INFO(   R   t   typeidt   result(    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   test_query2"   s$    c      	   C   sA  t  j } d } t  j ƒ  } | | _ t j | _ t j | _ d | _	 t  j
 | _ |  j j | d |  j d  d d t  j | ƒ t  j t  j B} |  j j | d |  j d  d t  j | ƒ \ } } |  j d | j ƒ |  j j | d |  j | d d t  j d  ƒ |  j j | d |  j d  d t  j | ƒ \ } } |  j d | j ƒ d  S(   Ns   1.168.192.in-addr.arpai    t
   ZoneCreatet	   EnumZonesi   t   DeleteZoneFromDs(   R   R   t!   DNS_RPC_ZONE_CREATE_INFO_LONGHORNt   pszZoneNameR    t   DNS_ZONE_TYPE_PRIMARYt
   dwZoneTypet   DNS_ZONE_UPDATE_SECUREt   fAllowUpdatet   fAgingt   DNS_DP_DOMAIN_DEFAULTt	   dwDpFlagsR   t   DnssrvOperation2R   R   t   DNSSRV_TYPEID_ZONE_CREATEt   DNS_ZONE_REQUEST_REVERSEt   DNS_ZONE_REQUEST_PRIMARYt   DnssrvComplexOperation2t   DNSSRV_TYPEID_DWORDR   t   dwZoneCountt   DNSSRV_TYPEID_NULL(   R   t   client_versiont   rev_zonet   zone_createt   request_filterR   t   zones(    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   test_operation28   sT    			
c         C   sÙ   t  j } t  j t  j B} |  j j | d |  j d  d t  j | ƒ \ } } |  j	 t  j
 | ƒ |  j	 d | j ƒ t  j t  j B} |  j j | d |  j d  d t  j | ƒ \ } } |  j	 t  j
 | ƒ |  j	 d | j ƒ d  S(   Ni    R    i   (   R   R   t   DNS_ZONE_REQUEST_FORWARDR.   R   R/   R   R   R0   R   t   DNSSRV_TYPEID_ZONE_LISTR1   R-   (   R   R3   R6   R   R7   (    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   test_complexoperation2l   s.    	

c         C   so   t  j } t j } t  j t  j B} |  j j | d |  j d d d  | | d  d  ƒ
 \ } } |  j
 d | j ƒ d  S(   Ni    s   ..RootHintst   .i   (   R   R   R    t   DNS_TYPE_NSt   DNS_RPC_VIEW_ROOT_HINT_DATAt   DNS_RPC_VIEW_ADDITIONAL_DATAR   t   DnssrvEnumRecords2R   R   R   t   count(   R   R3   t   record_typet   select_flagst   buflent	   roothints(    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   test_enumrecords2‡   s    		
c         C   s™  t  j } t j } t  j } d } t d ƒ } t d ƒ } t  j ƒ  } | | _ |  j j	 | d |  j
 |  j | | d  ƒ |  j j | d |  j
 |  j | d  | | d  d  ƒ
 \ } }	 |  j d |	 j ƒ |  j d |	 j d j ƒ |  j t j |	 j d j d j ƒ |  j d |	 j d j d j ƒ t  j ƒ  } | | _ t  j ƒ  }
 | |
 _ |  j j	 | d |  j
 |  j | | |
 ƒ |  j j | d |  j
 |  j | d  | | d  d  ƒ
 \ } }	 |  j d |	 j ƒ |  j d |	 j d j ƒ |  j t j |	 j d j d j ƒ |  j d |	 j d j d j ƒ t  j ƒ  }
 | |
 _ |  j j	 | d |  j
 |  j | d  |
 ƒ |  j t |  j j | d |  j
 |  j | d  | | d  d  ƒ d  S(   Nt   dummys   1.2.3.4s   5.6.7.8i    i   (   R   R   R    t
   DNS_TYPE_At   DNS_RPC_VIEW_AUTHORITY_DATAR   t   DNS_RPC_RECORD_BUFt   recR   t   DnssrvUpdateRecord2R   R   R   R@   R   RA   t   wRecordCountt   recordst   wTypet   datat   assertRaisest   RuntimeError(   R   R3   RB   RC   t   nameRK   t   rec2t   add_rec_bufRD   R   t   del_rec_buf(    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   test_updaterecords2™   s”    				$!		$!	c         C   s^  t  j } t j } t  j t  j B} d } t | ƒ } t  j ƒ  } | | _ |  j	 j
 | d |  j |  j d | d  ƒ |  j	 j | d |  j |  j d d  | | d  d  ƒ
 \ } } |  j d | j ƒ |  j d | j d j ƒ t }	 xj t d ƒ D]\ }
 |  j t j | j d j |
 j ƒ | j d j |
 j j j d ƒ | k rê t }	 qê qê W|  j |	 t ƒ d  S(   Ns   ns.example.locali    R<   t   @i   i   (   R   R   R    R=   RI   t   DNS_RPC_VIEW_NO_CHILDRENR   RJ   RK   R   RL   R   R   R   R@   R   RA   RM   t   Falset   rangeRN   RO   RP   t   strt   rstript   True(   R   R3   RB   RC   t
   nameserverRK   RU   RD   R   t   matcht   i(    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   test_updaterecords2_soaï   sB    		
	$)(	   t   __name__t
   __module__R
   R   R8   R;   RF   RW   Rb   (    (    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyR      s   			4			VN(   t   __doc__t   samba.dcerpcR    R   t   samba.testsR   R   t   samba.netcmd.dnsR   R   R   (    (    (    s@   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/dnsserver.pyt   <module>   s   