
    g                         S SK r S SKrS SKrS SKJrJrJr  S SKJr  S SK	J
r
Jr  S SKJr  S rS rS r " S	 S
\\5      rg)    N)
gp_xml_extcheck_safe_pathgp_file_applier)NamedTemporaryFile)copyfilemove)logc                 :   SnU R                  S5       GH  nUR                  S5      nUS:X  aI  UR                  S5      b  US-  nUR                  S5      b  US-  nUR                  S	5      b  US
-  nMb  Md  US:X  aI  UR                  S5      b  US-  nUR                  S5      b  US-  nUR                  S	5      b  US-  nM  M  US:X  d  M  UR                  S5      b  US-  nUR                  S5      b  US-  nUR                  S	5      c  M  US-  nGM     U$ )Nr   permissionstypeuserread   write   execute@   group          other         )findallgetfind)entrymoder   ptypes       8/usr/lib/python3/dist-packages/samba/gp/vgp_files_ext.py	calc_moder#      s:   D}}]3'F?'3(4	*6 7g'3(4	*6 7g'3(4	*6- 4. K    c                     Sn[        SSS5       H:  nSSSS.nUR                  5        H  nXU-  -  (       a	  XU   -  nM  US-  nM     M<     U$ )	N-   rwx)r   r   r   )rangekeys)r    statimaskr,   s        r"   stat_from_moder2   2   sZ    D1b"s-AAvQ	   Kr$   c                     [         R                  R                  U 5      (       a#  S[         R                  " U 5      R                  -  $ g )N   %d)ospathexistsr/   st_ctime)fnames    r"   source_file_changer:   =   s3    	ww~~erwwu~.... r$   c                   &    \ rS rSrS rS rS rSrg)vgp_files_extA   c                     g)NzVGP/Unix Settings/Files )selfs    r"   __str__vgp_files_ext.__str__B   s    (r$   c                    U HM  u  p4[        U 5      U;   d  M  U[        U 5         R                  5        H  u  pVU R                  X5U5        M     MO     U GH  nUR                  (       d  M  Sn[        R
                  R                  UR                  U5      n	U R                  U	5      n
U
(       d  M]  U
R                  S5      nUR                  S5      nUR                  S5       GH~  nU R                  R                  S5      nUR                  S5      R                  n[        R
                  R                  U[        R
                  R                  [        U	5      5      R                  5       UR                  5       5      n[        R
                  R!                  U5      (       d  ["        R$                  " SU5        M  UR                  S5      R                  nUR                  S	5      R                  nUR                  S
5      R                  n['        U5      nUnU R)                  [+        U5      UUSU-  5      nS nU R-                  UR.                  UUUUUUUU5	        GM     GM     g )N(MACHINE/VGP/VTLA/Unix/Files/manifest.xmlpolicysettingdatafile_properties	gpo_cachesourcezSource file does not existtargetr   r   r4   c                    [        [        R                  R                  U5      SS9 n[	        XR
                  5        [        R                  " UR
                  [        R                  " U5      R                  [        R                  " U5      R                  5        [        R                  " UR
                  U5        [        UR
                  U5        S S S 5        U/$ ! , (       d  f       U/$ = f)NF)dirdelete)r   r5   r6   dirnamer   namechownpwdgetpwnampw_uidgrpgetgrnamgr_gidchmodr   )source_filerJ   r   r   r    fs         r"   applier_func8vgp_files_ext.process_group_policy.<locals>.applier_funck   s    /BGGOOF4K7<>AB$[&&9HHQVVS\\$-?-F-F%(\\%%8%?%?AHHQVVT2 0> !'x> > !'xs   B+C
C.)stritemsunapplyfile_sys_pathr5   r6   joinparser   r   lp
cache_pathtextrN   r   upperr7   r	   warnr#   generate_value_hashr:   applyrO   )r@   deleted_gpo_listchanged_gpo_listguidsettings	attribute_gpoxmlr6   xml_confpolicyrF   r   
local_pathrI   rX   rJ   r   r   r    
value_hashrZ   s                          r"   process_group_policy"vgp_files_ext.process_group_policyE   s   .ND4yH$$,SY$7$=$=$?LILL)< %@ /
 $C   @ww||C$5$5s;::d+!7{{6*!\\*;<E!%!3!3K!@J"ZZ166F"$'',,z(=>DDF(.#8K 77>>+66!={K "ZZ166F ::f-22D!JJw/44E$U+D !'I
 "&!9!9.{; %"7J( JJsxxJ*FD%GA = $r$   c           
         0 nSnUR                   (       Ga[  [        R                  R                  UR                   U5      nU R	                  U5      nU(       d  U$ UR                  S5      nUR                  S5      nUR                  S5       H  nUR                  S5      R                  n	UR                  S5      R                  n
UR                  S5      R                  nUR                  S5      R                  n[        U5      n[        U5      < S	U< S	U< S	U
< S
U	< 3	n[        U 5      UR                  5       ;  a  / U[        U 5      '   U[        U 5         R                  U5        M     U$ )NrD   rE   rF   rG   rI   rJ   r   r   	z -> )r_   r5   r6   r`   ra   r   r   rd   r#   r2   r\   r.   append)r@   ro   outputrp   r6   rq   rr   rF   r   rI   rJ   r   r   r    ps                  r"   rsopvgp_files_ext.rsopw   s(   877<< 1 137Dzz$'H]]?3F;;v&D&78H-22H-22zz&)..

7+00 '#D)4Ht9FKKM1(*F3t9%s4y!((+ 9 r$   r?   N)__name__
__module____qualname____firstlineno__rA   ru   r|   __static_attributes__r?   r$   r"   r<   r<   A   s    )0Gdr$   r<   )r5   rQ   rT   samba.gp.gpclassr   r   r   tempfiler   shutilr   r   samba.gp.util.loggingr	   r#   r2   r:   r<   r?   r$   r"   <module>r      s;   "   I I ' ! %6	/KJ Kr$   