HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/tests/__pycache__/getdcname.cpython-310.pyc
o

�/aJ�@sldZddlmZddlmZmZddlZddlZddlmZddl	m
Z
ddlmZGdd	�d	ej
j�ZdS)
z)
    Tests GetDCNameEx calls in NETLOGON
�)�auth)�WERRORError�werrorN)�Credentials)�netlogon)�GUIDc@s�eZdZdd�Z		d,dd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdS)-�GetDCNameExcCsdtj��|_t�|_d|_tj�	d�|_
tj�	d�|_tj�	d�|_tj�	d�|_
tj�	d�|_dS)N�SERVER�REALM�DOMAIN�TRUST_REALM�TRUST_DOMAIN)�samba�tests�env_loadparm�lpr�creds�
netlogon_conn�os�environ�get�server�realm�domain�trust_realm�trust_domain)�self�r�7/usr/lib/python3/dist-packages/samba/tests/getdcname.py�setUp!szGetDCNameEx.setUpNFrc	CsP|jdurt�d|���|_|r|j�|jdd||||�S|j�|j||||�S)Nzncalrpc:[schannel]r)rr�get_loadparm�netr_DsRGetDCNameEx2r�netr_DsRGetDCNameEx)rr�domain_guid�	site_name�ex2�flagsrrr�_call_get_dc_name,s$
�
�
�zGetDCNameEx._call_get_dc_namecCs�|jdd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�|j��|j��kp=|j��|j��k�|jdt	j
d�}|�|j��|j���|jdt	jd�}|�|j��|j���dS)z�Check the most trivial requirements of Ex2 (no domain or site)

        a) The paths are prefixed with two backslashes
        b) The returned domains conform to the format requested
        c) The domain matches our own domain
        T)r%N�\\)r%r&)
r'�
assertTrue�dc_unc�
startswith�
dc_address�domain_name�lowerrrr�DS_RETURN_DNS_NAME�assertEqual�DS_RETURN_FLAT_NAME�r�responserrr�test_get_dc_ex2@s0�������zGetDCNameEx.test_get_dc_ex2cCs|jdurdS|j|jdd�}|j|jdd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�|j|j�|�|j|j�|�|j�	�|j�	�kp^|j�	�|j
�	�k�|j|jtjdd�}|�
|j�	�|j�	��|j|jtjdd�}|�
|j�	�|j
�	��dS)z�Check what happens to Ex2 requests after being forwarded to winbind

        a) The paths must still have the same backslash prefixes
        b) The returned domain does not match our own domain
        c) The domain matches the format requested
        NT)rr%r(�rr&r%)rr'rr)r*r+r,�assertNotEqualr-r.rrr/r0r1)r�response_trustr3rrr�test_get_dc_over_winbind_ex2]sN
�����������z(GetDCNameEx.test_get_dc_over_winbind_ex2cCs�|jdurdS|j|jtjd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�|j	�
�|j�
��dS)ziTest the standard Ex version (not Ex2)

        Ex calls Ex2 anyways, from now on, just test Ex.
        N�rr&r()rr'rr/r)r*r+r,r0r-r.)rr7rrr�test_get_dc_over_winbind�s
��z$GetDCNameEx.test_get_dc_over_winbindcCs�|jdurdSd}|j|j|tjd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�|j	�
�|j�
��|�|�
�|j�
��dS)�pTest the standard Ex version (not Ex2)

        We assume that there is a Default-First-Site-Name site.
        N�Default-First-Site-Name�rr$r&r()rr'rr/r)r*r+r,r0r-r.�dc_site_name)r�siter7rrr�"test_get_dc_over_winbind_with_site�s
��z.GetDCNameEx.test_get_dc_over_winbind_with_sitec
C�|jdurdSd}z|j|j|tjdd�}|�d�WdStyE}z|j\}}|tjkr:|�d�WYd}~dSWYd}~dSd}~ww�zqTest the standard Ex version (not Ex2)

        We assume that there is no Invalid-First-Site-Name site.
        N�Invalid-First-Site-NameF�rr$r&r%�3Failed to give the correct error for incorrect site�%Failed to detect an invalid site name�	rr'rr/�failr�argsr�WERR_NO_SUCH_DOMAIN�rr?r7�e�enum�estrrrr�%test_get_dc_over_winbind_invalid_site��"
�

���z1GetDCNameEx.test_get_dc_over_winbind_invalid_sitec
CrA)z`Test the Ex2 version.

        We assume that there is no Invalid-First-Site-Name site.
        NrCTrDrErFrGrKrrr�)test_get_dc_over_winbind_invalid_site_ex2�rPz5GetDCNameEx.test_get_dc_over_winbind_invalid_site_ex2c
Cs�|jdurdSd}z|j|j|tjd�}Wnty0}z|�dt|��WYd}~nd}~ww|�|jdu�|�|j�	d��|�|j
du�|�|j
�	d��|�|j�
�|j�
��|�|jdu�|�d|j�dS)r;N�r=�(Unable to get empty string site result: r()rr'rr/rrH�strr)r*r+r,r0r-r.r>r6�rr?r7rLrrr�*test_get_dc_over_winbind_empty_string_site�s*

����z6GetDCNameEx.test_get_dc_over_winbind_empty_string_sitec
Cs�|jdurdSz|j|jtjdd�}Wnty.}z|�dt|��WYd}~nd}~ww|�|du�|�	|j
��|j���dS)z#Supply a NETBIOS trust domain name.NFr5� Failed to succeed over winbind: )rr'rrr/rrHrTr)r0r-r.)rr7rLrrr� test_get_dc_over_winbind_netbios�s

����z,GetDCNameEx.test_get_dc_over_winbind_netbiosc
Cs�|jdurdSd}z
|j|j|tjdd�}Wnty3}z|�d|j||f�WYd}~nd}~ww|�|du�|�|j	�
�|j�
��|�|�
�|j�
��dS)z�Supply a NETBIOS trust domain name.

        Sporadically fails because NETBIOS queries do not return site name in
        winbind. The site check in NETLOGON will trigger and fail the request.

        Currently marked in flapping...
        Nr<FrDz7get_dc_name (domain=%s,site=%s) over winbind failed: %s)rr'rrr/rrHr)r0r-r.r>rUrrr�*test_get_dc_over_winbind_with_site_netbioss(

�
����z6GetDCNameEx.test_get_dc_over_winbind_with_site_netbiosc
Cs�|jdurdSt�}z|j|j|tjd�}Wnty1}z|�dt|��WYd}~nd}~ww|�|j	du�|�|j	�
d��|�|jdu�|�|j�
d��|�|j
��|j���dS)�?Ensure that we do not reject requests supplied with a NULL GUIDN�rr#r&z'Unable to get NULL domain GUID result: r()rrr'rr/rrHrTr)r*r+r,r0r-r.)r�	null_guidr7rLrrr�$test_get_dc_over_winbind_domain_guids&

����z0GetDCNameEx.test_get_dc_over_winbind_domain_guidcCs�d}|j|j|tjd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�|j	�
�|j�
��|�|�
�|j�
��dS)r;r<r=Nr()r'rrr/r)r*r+r,r0r-r.r>)rr?r3rrr�test_get_dc_with_site5s��z!GetDCNameEx.test_get_dc_with_sitec
CrArB)	rr'rr/rHrrIrrJ�rr?r3rLrMrNrrr�test_get_dc_invalid_siteJrPz$GetDCNameEx.test_get_dc_invalid_sitec
Cs~d}z|j|j|tjdd�}|�d�WdSty>}z|j\}}|tjkr3|�d�WYd}~dSWYd}~dSd}~ww)z_Test the Ex2 version

        We assume that there is no Invalid-First-Site-Name site.
        rCTrDrErFN)	r'rrr/rHrrIrrJr_rrr�test_get_dc_invalid_site_ex2^s�

���z(GetDCNameEx.test_get_dc_invalid_site_ex2c
Cs�d}z|j|j|tjd�}Wnty)}z|�dt|��WYd}~nd}~ww|�|jdu�|�|j�	d��|�|j
du�|�|j
�	d��|�|j�
�|j�
��|�|jdu�|�d|j�dS)r;rRr=rSNr()r'rrr/rrHrTr)r*r+r,r0r-r.r>r6�rr?r3rLrrr�test_get_dc_empty_string_siteps&
����z)GetDCNameEx.test_get_dc_empty_string_sitec
Cszz|j|jtjdd�}Wnty'}z|�dt|��WYd}~nd}~ww|�|du�|�|j	�
�|j�
��dS)�Supply a NETBIOS domain name.Fr5rWN)r'rrr/rrHrTr)r0r-r.r)rr3rLrrr�test_get_dc_netbios�s
����zGetDCNameEx.test_get_dc_netbiosc
Cs�d}z
|j|j|tjdd�}Wnty*}z|�dt|��WYd}~nd}~ww|�|du�|�|j	�
�|j�
��|�|�
�|j�
��dS)rdr<FrDrWN)
r'rrr/rrHrTr)r0r-r.rr>rbrrr�test_get_dc_with_site_netbios�s 
����z)GetDCNameEx.test_get_dc_with_site_netbioscCszt�}|j|j|tjd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�	|j
��|j���dS)rZr[Nr()rr'rrr/r)r*r+r,r0r-r.)rr\r3rrr�test_get_dc_with_domain_guid�s��z(GetDCNameEx.test_get_dc_with_domain_guidcCsp|jdtjd�}|�|jdu�|�|j�d��|�|jdu�|�|j�d��|�|j�	�|j
�	��dS)z1Ensure that empty domain resolve to the DC domainrRr9Nr()r'rr/r)r*r+r,r0r-r.rr2rrr�$test_get_dc_with_empty_string_domain�s��z0GetDCNameEx.test_get_dc_with_empty_string_domain)NNNFr)�__name__�
__module__�__qualname__rr'r4r8r:r@rOrQrVrXrYr]r^r`rarcrerfrgrhrrrrrs.
�*r)�__doc__rrrr�samba.testsr�samba.credentialsr�samba.dcerpcr�samba.dcerpc.miscrr�TestCaserrrrr�<module>s