
    @Oc5                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ ddZ G d	 d
e          ZdS )    N)DNSTKeyTest)DCJoinContext)drsuapimiscdns)Credentials)interface_ips_v4subunitc                     ddl }|                    |           }|                    |                    t          j                             |S )zGet a logger object.r   N)logging	getLogger
addHandlerStreamHandlersysstderr)namer   loggers      2/usr/lib/python3/dist-packages/samba/tests/join.py
get_loggerr      sG    NNNt$$F
g++CJ77888M    c                   4     e Zd Z fdZ fdZd Zd Z xZS )JoinTestCasec           
         t           j                            d          | _        t           j                            d          | _        t          t          |                                            t           j                                        | _	        | 
                                | _        d| _        t                      }t          | j        | j        |                                 | j        | j        d |d          | _        t           j        j        t           j        j        z  | j        _        | j        xj        t.          j        t.          j        z  z  c_        | j        j        | j        _        t6          j        | j        _        | j                                         d| j        _        | j                                          d S )NSERVER	SERVER_IP	jointest1SAMBA_INTERNAL)servercredslpnetbios_name	targetdirdomainr   dns_backendT)!sambatestsenv_get_var_valuer   	server_ipsuperr   setUpenv_loadparmr    get_credentialsr   r!   r   r   get_loadparmtempdirjoin_ctxdsdbUF_SERVER_TRUST_ACCOUNTUF_TRUSTED_FOR_DELEGATIONuserAccountControlreplica_flagsr   DRSUAPI_DRS_WRIT_REP!DRSUAPI_DRS_FULL_SYNC_IN_PROGRESSdomain_replica_flagsr   SEC_CHAN_BDCsecure_channel_typecleanup_old_joinforce_all_ipsdo_join)selfr   	__class__s     r   r*   zJoinTestCase.setUp'   sf   k33H==66{CClD!!'')))+**,,))++
'%T[
)-):):)<)<373D04-1&2BD D D -2J,N,1J,P-Q( 	##(D(/(Q)R 	S##-1]-H*,0,=)&&(((&*#r   c                    	 | j         j        }n# t          $ r d }Y nw xY w|^t          j        |j                   t          j        |j                   |                     ddd           |                     d           | j         	                    d           t          t          |                                            d S )Netczmsg.lockzbind-dnsz	names.tdbT)force)r/   pathsAttributeErrorshutilrmtreeprivate_dir	state_dirrm_dirsrm_filesr:   r)   r   tearDown)r=   rB   r>   s     r   rJ   zJoinTestCase.tearDownD   s    	M'EE 	 	 	EEE	 M%+,,,M%/***LL
J777MM+&&&&&T&222lD!!**,,,,,s    c                 `   |                      t          j                  }g }| j        j        }|                     |t          j        t          j                  }|                    |           t          | j
        d          }|                     ||           |                     || j                  \  }}|                     |t          j                   |                     |t          j                   |                     |j        t'          |                     g }| j        j        d| j        j        }|                     |t          j        t          j                  }|                    |           |                     ||           |                     || j                  \  }}|                     |t          j                   |                     |t          j                   |                     |j        dt'          |          z              |                     |j        d         j        t          j                   |                     |j        d         j        | j        j                   |                     |j        d         j        t          j                   dS )z9create a query packet containing one query record via TCPTall_interfaceshostz._msdcs.   r   N)make_name_packetr   DNS_OPCODE_QUERYr/   dnshostnamemake_name_questionDNS_QTYPE_ADNS_QCLASS_INappendr	   r    finish_name_packetdns_transaction_tcpr(   assert_dns_rcode_equalsDNS_RCODE_OKassert_dns_opcode_equalsassertEqualancountlen	ntds_guid	dnsforestanswersrr_typeDNS_QTYPE_CNAMErdata)r=   p	questionsr   qIPsresponseresponse_packets           r   test_join_makes_recordsz$JoinTestCase.test_join_makes_recordsT   sB   !!#"677	}(##D#/3;LMM twt<<<9---&*&>&>qt~&>&V&V#?$$Xs/?@@@%%h0DEEE)3s88444	!%!8!8!8$-:Q:QR##D#/3;LMM9---&*&>&>qt~&>&V&V#?$$Xs/?@@@%%h0DEEE)1s3xx<888)!,4c6IJJJ)!,2DM4MNNN)!,4coFFFFFr   c                    t                      }|                    | j        j                   |                    | j        j                   |                     |           |                     t          j                  }| 	                    | j        j
        t          j        t          j                  }g }|                    |           |                     ||           g }t          | j        d          }|dd          D ]}d|v rWt          j                    }| j        j        |_        t          j        |_        t          j        |_        d|_        d|_        |}	nVt          j                    }| j        j        |_        t          j        |_        t          j        |_        d|_        d|_        |}	|	|_        |                    |           t7          |          |_        ||_        |                     || j                  }
|                      || j!                  \  }}| "                    |t          j#                   | $                    |||
           |                     t          j%                  }g }| j        j        }| 	                    |t          j        t          j                  }|                    |           |                     ||           | &                    || j!                  \  }}| "                    |t          j#                   | '                    |t          j%                   | (                    |j)        d           d S )	N)r   TrL   rP   :r   i  rN   )*r   guessr/   r    set_machine_account
tkey_transrQ   r   DNS_OPCODE_UPDATErT   	dnsdomainDNS_QTYPE_SOArV   rW   rX   r	   res_recrS   r   DNS_QTYPE_AAAArc   DNS_QCLASS_NONErr_classttllengthrU   re   r_   nscountnsrecssign_packetkey_namedns_transaction_udpr(   rZ   r[   verify_packetrR   rY   r\   r]   r^   )r=   dc_credsrf   rh   rg   updatesri   IPrre   macrj   
response_pr   rk   s                  r   test_join_records_can_updatez)JoinTestCase.test_join_records_can_updateu   s   ==t}'((($$T]%5666h'''!!#"788##DM$;$'$5$'$57 7 	9---twt<<<abb' 	 	BbyyKMM2.	 0
!KMM2O	 0
!AGNN1LL	q$-00!%!9!9!T^!L!L:$$Xs/?@@@8Z555!!#"677	}(##D#/3;LMM9---&*&>&>qt~&>&V&V#?$$Xs/?@@@%%h0DEEE)1-----r   )__name__
__module____qualname__r*   rJ   rl   r   __classcell__)r>   s   @r   r   r   &   ss                 :- - - - - G G GB:. :. :. :. :. :. :.r   r   )r
   )r%   r   rD   ossamba.tests.dns_baser   
samba.joinr   samba.dcerpcr   r   r   samba.credentialsr   samba.provisionr	   r   r    r   r   <module>r      s   &  



  				 , , , , , , $ $ $ $ $ $ + + + + + + + + + + ) ) ) ) ) ) , , , , , ,   I. I. I. I. I.; I. I. I. I. I.r   