
    beK                     z   d dl Z d dlZe j                            d d           dej        d<   d dlZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ ej                            d ej        d d          z            Z G d de          Zedk    rd dlZ ej                     dS dS )    Nz
bin/python1PYTHONUNBUFFERED)TestCase)NTSTATUSError)credentials)NT_STATUS_NOTIFY_CLEANUP)libsmb_samba_internal)param)security)ntaclsznotify_test_%d  c                   R     e Zd Z fdZd Z fdZd Zd Z	 	 d
dZd Z	d	 Z
 xZS )SMBNotifyTestsc                 $   t          t          |                                            t          j                            d          | _        t          j                    | _	        | j	        
                    t          j                            d                     t          j                            d          | _        t          j                    }|                    | j	                   |                    t          j                            d                     |                    t          j                            d                     t          j                            dd          }|d	}t#          t%          |                    | _        t)          j        | j        | j        | j	        |          | _        d | _        	 | j                            t2                     n#  Y nxY w| j                            t2                     d S )
NSERVERSMB_CONF_PATHNOTIFY_SHAREUSERNAMEPASSWORDSTRICT_CHECKINGT)allow_missingr   )superr   setUpsambatestsenv_get_var_valueservers3paramget_contextlploadsharer   Credentialsguessset_usernameset_passwordboolintstrict_checkinglibsmbConnsmb_connsmb_conn_unprivdeltreetest_dirmkdir)selfcredsr)   	__class__s      8/usr/lib/python3/dist-packages/samba/tests/smb-notify.pyr   zSMBNotifyTests.setUp'   s   nd##))+++k33H== %''U[22?CCDDD[22>BB
'))DG5;88DDEEE5;88DDEEE+778IY]7^^"!O#C$8$899DKTWeLL#	M!!(++++	DH%%%%%s   
G* *G.c                 ~   t          j                    }|                    | j                   |                    t
          j                            d                     |                    t
          j                            d                     t          j
        | j        | j        | j        |          | _        d S )NUSERNAME_UNPRIVPASSWORD_UNPRIV)r   r#   r$   r    r%   r   r   r   r&   r*   r+   r   r"   r-   )r1   creds_unprivs     r4   connect_unprivzSMBNotifyTests.connect_unprivD   s    ".0047###!!%+"?"?@Q"R"RSSS!!%+"?"?@Q"R"RSSS%{4;
DG\ZZ    c                     t          t          |                                            	 | j                            t
                     d S #  Y d S xY w)N)r   r   tearDownr,   r.   r/   )r1   r3   s    r4   r<   zSMBNotifyTests.tearDownL   sP    nd##,,...	M!!(+++++	DDs   A Ac                 j    t           j                            ||                              dd          S )N/\)ospathjoinreplace)r1   dirpathfilenames      r4   	make_pathzSMBNotifyTests.make_pathS   s(    w||GX..66sDAAAr:   c                 4   | j                             dd          }| j                             |dt          j        d          }| j                             t
          d          }| j                             |dt          j        d          }| j                                          |                    d          }|                     |           |                    d          }|                     |           d	}| 	                    t
          |          }| j         
                    |           |                    d          }|                     |           |                     |d
         d         |           |                     |d
         d         t          j                   |                     t          |          d           |                    d          }|                     |           |                     |d
         d         |           |                     |d
         d         t          j                   |                     t          |          d           | j                             |dt          j        d          }| j                             |dt          j        d          }| j                                          |                    d          }|                     |           |                    d          }|                     |           d}| 	                    ||          }	| 	                    ||          }
| j         
                    |
           |                    d          }|                     |           |                     |d
         d         |
           |                     |d
         d         t          j                   |                     t          |          d           |                    d          }|                     |           |                     |d
         d         |	           |                     |d
         d         t          j                   |                     t          |          d           | j                             |dt          j        d          }| j                             |dt          j        d          }| j                                          |                    d          }|                     |           |                    d          }|                     |           | j                             |
           |                    d          }|                     |           |                     |d
         d         |
           |                     |d
         d         t          j                   |                     t          |          d           |                    d          }|                     |           |                     |d
         d         |	           |                     |d
         d         t          j                   |                     t          |          d           | j                             |dt          j        d          }| j                             |dt          j        d          }| j                                          |                    d          }|                     |           |                    d          }|                     |           | j                             |           	 |                    d          }|                                  nB# t&          j        $ r0}|                     |j        d
         t,                     Y d }~nd }~ww xY w| j                                          |                    d          }| j        r|                     |           ||                     |d
         d         t
                     |                     |d
         d         t          j                   |                     t          |          d           | j                             |dt          j        d          }| j                                          |                    d          }|                     |           | j                             |           |                    d          }|                     |           |                     |d
         d         |           |                     |d
         d         t          j                   |                     t          |          d           | j                             |dt          j        d          }| j                             |           	 |                    d          }|                                  d S # t&          j        $ r1}|                     |j        d
         t,                     Y d }~d S d }~ww xY w)N    NameShareAccessr   Tfnumbuffer_sizecompletion_filter	recursiveFwaitdirr   nameactionsubdir)r,   createnotifyr*   FILE_NOTIFY_CHANGE_ALLr/   echoget_changesassertIsNonerF   r0   assertIsNotNoneassertEqualNOTIFY_ACTION_ADDEDlenrmdirNOTIFY_ACTION_REMOVEDclosefailr   r   argsr   r)   NOTIFY_ACTION_MODIFIED)r1   	root_fnumroot_notifytest_dir_fnumtest_dir_notifychangesdir_namedir_pathsub_namesub_path_relsub_path_fullerrs               r4   test_notifyzSMBNotifyTests.test_notifyV   s
   M((ba(@@	m**	7==C=Z59 + ; ;
 ,,(,JJ-..M;AAGA^9= / ? ? 	))u)55'"""!--5-99'""" >>(H55H%%% ))t)44W%%%F+X666H-v/IJJJWq)))!--4-88W%%%F+X666H-v/IJJJWq))) m**	7==C=Z59 + ; ; -..M;AAGA^9= / ? ? 	))u)55'"""!--5-99'""" ~~h99x::M*** ))t)44W%%%F+];;;H-v/IJJJWq)))!--4-88W%%%F+\:::H-v/IJJJWq))) m**	7==C=Z59 + ; ; -..M;AAGA^9= / ? ? 	))u)55'"""!--5-99'""" 	M*** ))t)44W%%%F+];;;H-v/KLLLWq)))!--4-88W%%%F+\:::H-v/KLLLWq))) m**	7==C=Z59 + ; ; -..M;AAGA^9= / ? ? 	))u)55'"""!--5-99'""" 	M***	D%11t1<<GIIKKKK" 	D 	D 	DSXa[*BCCCCCCCC	D))u)55 	*  )))WQZ/:::WQZ163PQQQS\\1--- -..I;AAGA^9= / ? ?K 	))u)55'""" 	H%%% ))t)44W%%%F+X666H-v/KLLLWq))) m**	7==C=Z59 + ; ; 	I&&&	D!--4-88GIIKKKKK" 	D 	D 	DSXa[*BCCCCCCCCC	Ds0   *_ ` &_;;` +*i j&&jjNc           	      D   |                                   t          j                    }t          j        | j        |          }d}|                     ||          }|                     t          |          }| j                            |           |	                    |          }t          j
                    }	|j        |	_        |j        |	_        t          j
                            dt          j        t          j        t          j        t!          |j                  fz  |          }	|	xj        t          j        z  c_        |	xj        t          j        z  c_        t          j        t          j        z  t          j        z  }
|                    ||	|
           | j                            |d          }| j                            |dt4          j        d          }| j                            |d          }| j                            |dt4          j        d          }| j                                         |                    d	
          }|                     |           | j                                         |                    d	
          }|                     |           d}|                     ||          }|                     ||          }| j                            |           |                    d
          }|                      |           | !                    |d         d         |           | !                    |d         d         t4          j"                   | !                    tG          |          d           | j                            |dt4          j        d          }| j                                         |                    d	
          }|                     |           | j                                         |                    d	
          }|                     |           | j        $                    |           |                    d
          }|                      |           | !                    |d         d         |           | !                    |d         d         t4          j%                   | !                    tG          |          d           | j                            |dt4          j        d          }| j                                         |                    d	
          }|                     |           | j                                         |                    d	
          }|                     |           | j        $                    |           |                    d
          }|                      |           | !                    |d         d         |           | !                    |d         d         t4          j%                   | !                    tG          |          d           | j                            |dt4          j        d          }|                    d
          }|                      |           | !                    |d         d         |           | !                    |d         d         t4          j%                   | !                    tG          |          d           | j                            |dt4          j        d          }| j                                         |                    d	
          }|                     |           | j                                         |                    d	
          }|                     |           | j        &                    |           	 |                    d
          }| '                                 nB# tP          j)        $ r0}| !                    |j*        d         tV                     Y d }~nd }~ww xY w| j                                         |                    d	
          }|                     |           | j        &                    |           	 |                    d
          }| '                                 d S # tP          j)        $ r1}| !                    |j*        d         tV                     Y d }~d S d }~ww xY w)Nprivatez"G:BAD:(A;;0x%x;;;%s)(A;;0x%x;;;%s))sinforI   rJ   r   TrM   FrR   ztest-newr   rU   rV   ),r9   r   dom_sidr   	SMBHelperr,   rF   r/   r0   get_acl
descriptortyperevision	from_sddlSEC_RIGHTS_DIR_ALLSID_NT_SYSTEMstr	owner_sidSEC_DESC_SELF_RELATIVESEC_DESC_DACL_PROTECTEDSECINFO_GROUPSECINFO_DACLSECINFO_PROTECTED_DACLset_aclrX   rY   r*   rZ   r-   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   r   r   rf   r   )r1   monitor_path
rel_prefix
domain_sid
smb_helperprivate_nameprivate_relprivate_pathprivate_path_sd_oldprivate_path_sd_newset_secinfomonitor_priv_fnumnotify_privmonitor_unpriv_fnumnotify_unprivrl   new_namenew_relnew_pathrr   s                       r4   _test_notify_privileged_pathz+SMBNotifyTests._test_notify_privileged_path
  s    	%''
%dmZ@@
 nnZ>>~~h==L)))
 )00>>&133#6#; ':'C$&1;;<`+&+'122	d4 =4
   	  H$CC    H$DD  ,x/DDxGff<)<KPPP !M00lPQ0RRm**0A7==C=Z59 + ; ; #299|YZ9[[,339L@FFLFc>B 4 D D 	))u)55'"""!!###+++77'""" ..h77>>,99H%%% ))t)44W%%%F+W555H-v/IJJJWq)))m**0A7==C=Z59 + ; ; 	!!###+++77'"""))u)55'""" 	H%%% ))t)44W%%%F+W555H-v/KLLLWq)))m**0A7==C=Z59 + ; ; 	!!###+++77'"""))u)55'""" 	L)))  +++66W%%%F+[999H-v/KLLLWq))),339L@FFLFc>B 4 D D ))t)44W%%%F+[999H-v/KLLLWq)))m**0A7==C=Z59 + ; ; 	!!###+++77'"""))u)55'""" 	""#6777	D#//T/::GIIKKKK" 	D 	D 	DSXa[*BCCCCCCCC	D 	))u)55'""" 	-...	D!--4-88GIIKKKKK" 	D 	D 	DSXa[*BCCCCCCCCC	Ds0   '*` a!&aa3*c d.&ddc                 :    |                      t          d          S NrH   )r   r   r   r/   r1   s    r4   test_notify_privileged_testz*SMBNotifyTests.test_notify_privileged_test  s    00hSU0VVVr:   c                 :    |                      dt                    S r   r   r   s    r4   test_notify_privileged_rootz*SMBNotifyTests.test_notify_privileged_root  s    00bX0VVVr:   )NN)__name__
__module____qualname__r   r9   r<   rF   rs   r   r   r   __classcell__)r3   s   @r4   r   r   &   s        & & & & &:[ [ [    B B BqD qD qDj 3704ZD ZD ZD ZDxW W WW W W W W W Wr:   r   __main__)sysr@   rA   insertenvironr   randomsamba.testsr   r   r   samba.ntstatusr   samba.samba3r	   r*   r
   r   samba.dcerpcr   r   rB   randintr/   r   r   unittestmain r:   r4   <module>r      so  $ 


 				 <      !$
                            3 3 3 3 3 3 8 8 8 8 8 8 ) ) ) ) ) ) ! ! ! ! ! !      7<<(>6>!V+D+DDEEDW DW DW DW DWX DW DW DWL zOOOHMOOOOO r:   