
    b	                         d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d Zd Z G d	 d
e          ZdS )    N)
gp_xml_extcheck_safe_path)NamedTemporaryFile)copyfilemove)blake2b)logc                 d   d}|                      d          D ]}|                    d          }|dk    rO|                    d          |dz  }|                    d          |dz  }|                    d	          |d
z  }m|dk    rO|                    d          |dz  }|                    d          |dz  }|                    d	          |dz  }|dk    rN|                    d          |dz  }|                    d          |dz  }|                    d	          |dz  }|S )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3  ''F??''3((4	**6g''3((4	**6g''3((4	**6K    c                     d}t          ddd          D ]8}dddd}|                                D ]}| ||z  z  r|||         z  }|dz  }9|S )	N-   rwx)r   r   r   )rangekeys)r    statimaskr,   s        r"   stat_from_moder2   3   s~    D1b"  s-- 	 	AqAv Q		
 Kr$   c                        e Zd Zd Zd Zd ZdS )vgp_files_extc                     dS )NzVGP/Unix Settings/Files )selfs    r"   __str__zvgp_files_ext.__str__?   s    ((r$   c           
      	   |D ]\  }}| j                             |           t          |           |v r|t          |                                                    D ]`\  }}t          j                            |          rt	          j        |           | j                             t          |           |           a| j         	                                 |D ]}|j
        r| j                             |j                   d}t          j                            |j
        |          }	|                     |	          }
|
si|
                    d          }|                    d          }|                    d          D ]}| j                            d          }|                    d          j        }t          j                            |t          j                            t)          |	                                                    |                                          }t          j                            |          st-          j        d|           t1          t3          |d                                                                                    }|                    d	          j        }|                    d
          j        }|                    d          j        }t9          |          }d||||fz  }| j                             t          |           |          }||k    rt          j                            |          rt-          j        d|           t=          t          j                            |          d          5 }t?          ||j                   t	          j         |j        tC          j"        |          j#        tI          j%        |          j&                   t	          j'        |j        |           tQ          |j        |           d d d            n# 1 swxY w Y   | j         )                    t          |           ||           | j         	                                 d S )N(MACHINE/VGP/VTLA/Unix/Files/manifest.xmlpolicysettingdatafile_properties	gpo_cachesourcezSource file does not existrbtargetr   r   z%s:%s:%s:%dzTarget file already existsF)dirdelete)*gp_dbset_guidstritemsospathexistsunlinkrC   commitfile_sys_pathnamejoinparser   r   lp
cache_pathtextdirnamer   upperr	   warnr   openr   	hexdigestr#   retriever   r   chownpwdgetpwnampw_uidgrpgetgrnamgr_gidchmodr   store)r7   deleted_gpo_listchanged_gpo_listguidsettings	attribute_gpoxmlrI   xml_confpolicyr<   r   
local_pathr?   source_filesource_hashrA   r   r   r    valueold_valfs                            r"   process_group_policyz"vgp_files_ext.process_group_policyB   s   . 	  	 ND(J%%%4yyH$$$,SYY$7$=$=$?$? < <LIqw~~i00 -	),,,J%%c$ii;;;;J# (	( (	(C  '(
##CH---@w||C$5s;;::d++ !77{{6**!\\*;<< ( (E!%!3!3K!@!@J"ZZ116F"$',,z(=(=>>DDFF(.#8 #8K 7>>+66 !!={KKK [$ 7 7 < < > >??IIKK  "ZZ116F ::f--2D!JJw//4E$U++D)[$t,LLE"j11#d))VDDG%'' w~~f-- !!=vFFF +0G0G38: : : -=> af555d););)B!$e!4!4!;= = =...QVV,,,- - - - - - - - - - - - - - - J$$SYY>>>J%%''''Q(	( (	(s   BP//P36P3c           
          i }d}|j         rqt          j                            |j         |          }|                     |          }|s|S |                    d          }|                    d          }|                    d          D ]}|                    d          j        }	|                    d          j        }
|                    d          j        }|                    d          j        }t          |          }t          |          d	|d	|d	|
d
|		}t          |           |                                vrg |t          |           <   |t          |                                        |           |S )Nr:   r;   r<   r=   r?   rA   r   r   	z -> )rM   rH   rI   rO   rP   r   r   rS   r#   r2   rF   r.   append)r7   ri   outputrj   rI   rk   rl   r<   r   r?   rA   r   r   r    ps                  r"   rsopzvgp_files_ext.rsopv   sg   8 	,7<< 1377Dzz$''H ]]?33F;;v&&D&788 
, 
,H--2H--2zz&)).

7++0 ''#D))))444Ht99FKKMM11(*F3t99%s4yy!((++++r$   N)__name__
__module____qualname__r8   rs   ry   r6   r$   r"   r4   r4   >   sB        ) ) )2( 2( 2(h    r$   r4   )rH   r[   r^   samba.gp.gpclassr   r   tempfiler   shutilr   r   hashlibr   samba.gp.util.loggingr	   r#   r2   r4   r6   r$   r"   <module>r      s   "             8 8 8 8 8 8 8 8 ' ' ' ' ' ' ! ! ! ! ! ! ! !       % % % % % %  6	 	 	M M M M MJ M M M M Mr$   