
    Id                         d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d Zd Zd Z G d	 d
ee      Zy)    N)
gp_xml_extcheck_safe_pathgp_file_applier)NamedTemporaryFile)copyfilemove)logc                    d}| j                  d      D ]  }|j                  d      }|dk(  rD|j                  d      |dz  }|j                  d      |dz  }|j                  d	      W|d
z  }]|dk(  rD|j                  d      |dz  }|j                  d      |dz  }|j                  d	      |dz  }|dk(  s|j                  d      |dz  }|j                  d      |dz  }|j                  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#      s5   D}}]3 'F?'3(4	*6g'3(4	*6g'3(4	*6-. K    c                     d}t        ddd      D ]3  }dddd}|j                         D ]  }| ||z  z  r	|||   z  }|dz  } 5 |S )	N-   rwx)r   r   r   )rangekeys)r    statimaskr,   s        r"   stat_from_moder2   2   sh    D1b" s- 	AqAvQ		 Kr$   c                     t         j                  j                  |       r"dt        j                  |       j                  z  S y )N   %d)ospathexistsr/   st_ctime)fnames    r"   source_file_changer:   =   s0    	ww~~erwwu~.... r$   c                       e Zd Zd Zd Zd Zy)vgp_files_extc                      y)NzVGP/Unix Settings/Files )selfs    r"   __str__zvgp_files_ext.__str__B   s    (r$   c                    |D ]J  \  }}t        |       |v s|t        |          j                         D ]  \  }}| j                  |||        L |D ]"  }|j                  s| j                  j                  |j                         d}t        j                  j                  |j                  |      }	| j                  |	      }
|
sv|
j                  d      }|j                  d      }|j                  d      D ]v  }| j                  j                  d      }|j                  d      j                  }t        j                  j                  |t        j                  j!                  t#        |	            j%                         |j%                               }t        j                  j'                  |      st)        j*                  d|       |j                  d      j                  }|j                  d	      j                  }|j                  d
      j                  }t-        |      }|}| j/                  t1        |      ||d|z        }d }| j3                  |j                  ||||||||	       y % y )N(MACHINE/VGP/VTLA/Unix/Files/manifest.xmlpolicysettingdatafile_properties	gpo_cachesourcezSource file does not existtargetr   r   r4   c                    t        t        j                  j                  |      d      5 }t	        | |j
                         t        j                  |j
                  t        j                  |      j                  t        j                  |      j                         t        j                  |j
                  |       t        |j
                  |       d d d        |gS # 1 sw Y   |gS xY w)NF)dirdelete)r   r5   r6   dirnamer   namechownpwdgetpwnampw_uidgrpgetgrnamgr_gidchmodr   )source_filerH   r   r   r    fs         r"   applier_funcz8vgp_files_ext.process_group_policy.<locals>.applier_funcl   s    /BGGOOF4K7<> 1AB$[!&&9HHQVVS\\$-?-F-F%(\\%%8%?%?AHHQVVT2 01 !'x1 !'xs   B(CC))stritemsunapplyfile_sys_pathgp_dbset_guidrM   r5   r6   joinparser   r   lp
cache_pathtextrL   r   upperr7   r	   warnr#   generate_value_hashr:   apply)r?   deleted_gpo_listchanged_gpo_listguidsettings	attribute_gpoxmlr6   xml_confpolicyrD   r   
local_pathrG   rV   rH   r   r   r    
value_hashrX   s                          r"   process_group_policyz"vgp_files_ext.process_group_policyE   s   . 	=ND(4yH$$,SY$7$=$=$? =LIqLLy)<=	=
 $ +	GC  

##CHH-@ww||C$5$5s;::d+!7{{6*!\\*;< !GE!%!3!3K!@J"ZZ166F"$'',,z(=>DDF(.#8K 77>>+6!={K "ZZ166F ::f-22D!JJw/44E$U+D !'I
 "&!9!9.{; %"7J( JJsxxJ*FD%GA!G+	Gr$   c           
         i }d}|j                   rMt        j                  j                  |j                   |      }| j	                  |      }|s|S |j                  d      }|j                  d      }|j                  d      D ]  }|j                  d      j                  }	|j                  d      j                  }
|j                  d      j                  }|j                  d      j                  }t        |      }t        |      d	|d	|d	|
d
|		}t        |       |j                         vrg |t        |       <   |t        |          j                  |        |S )NrB   rC   rD   rE   rG   rH   r   r   	z -> )r\   r5   r6   r_   r`   r   r   rc   r#   r2   rY   r.   append)r?   rn   outputro   r6   rp   rq   rD   r   rG   rH   r   r   r    ps                  r"   rsopzvgp_files_ext.rsopx   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!((+
, r$   N)__name__
__module____qualname__r@   rt   rz   r>   r$   r"   r<   r<   A   s    )1Gfr$   r<   )r5   rO   rR   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	/LJ Lr$   