
    Id~                         d dl Z d dlZd dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ dZdZ G d d	ee      Zd
 Zd Z G d de      Zy)    N)PopenPIPE)
gp_pol_extdrop_privilegesgp_file_applier)blake2b)NamedTemporaryFilea  
### autogenerated by samba
#
# This file is generated by the gp_centrify_crontab_ext Group Policy
# Client Side Extension. To modify the contents of this file,
# modify the appropriate Group Policy objects which apply
# to this machine. DO NOT MODIFY THIS FILE DIRECTLY.
#

z 
### autogenerated by samba ###
c                   $    e Zd Zd Z	 ddZddZy)gp_centrify_crontab_extc                      y)NzCentrify/CrontabEntries )selfs    B/usr/lib/python3/dist-packages/samba/gp/gp_centrify_crontab_ext.py__str__zgp_centrify_crontab_ext.__str__&   s    (    Nc                    |D ]J  \  }}t        |       |v s|t        |          j                         D ]  \  }}| j                  |||        L |D ]  }|j                  sd}	d}
t        j
                  j                  |j                  |
      }| j                  |      }|sSg }|j                  D ]H  }|j                  |	k(  s|j                  j                         s.|j                  |j                         J fd}| j                  |j                        } | j                  | }| j!                  |j                  ||||       | j#                  |j                  |        y )N6Software\Policies\Centrify\UnixSettings\CrontabEntrieszMACHINE/Registry.polc                     sdn}t        ddd|      5 }t        }| D ]
  }|d|z  z  } |t        z  }|j                  |       |j                  gcd d d        S # 1 sw Y   y xY w)Nz/etc/cron.dgp_zw+F)prefixmodedeletedirz%s
)r	   introendwritename)entriescron_dirfcontentsentrycdirs        r   applier_funczBgp_centrify_crontab_ext.process_group_policy.<locals>.applier_func=   su    48}dH+5t#(h8 (;<#(%, 7E$6H7 C) !x( ( (s   <AA&)keep)stritemsunapplyfile_sys_pathospathjoinparser   keynamedatastripappendgenerate_attributer   generate_value_hashapplyclean)r   deleted_gpo_listchanged_gpo_listr#   guidsettings	attributescriptgposectionpol_filer+   pol_confr   er$   
value_hashs      `             r   process_group_policyz,gp_centrify_crontab_ext.process_group_policy)   sM   . 	:ND(4yH$)1#d))<)B)B)D :%IvLLy&9:	:
 $ 	5C  P 1ww||C$5$5x@::d+!)) /AyyG+qvv./	( !33CHH=	5T55w?


388Y
L"$ 

388)
4;	5r   c                    i }d}d|z  }|j                   rt        j                  j                  |j                   |      }| j	                  |      }|s|S |j
                  D ]}  }|j                  |k(  s|j                  j                         s.t        |       |j                         vrg |t        |       <   |t        |          j                  |j                          |S )Nr   z%s/Registry.pol)r)   r*   r+   r,   r-   r   r.   r/   r0   r&   keysr1   )	r   r<   targetoutputr=   r>   r+   r?   r@   s	            r   rsopzgp_centrify_crontab_ext.rsopO   s    N$v-77<< 1 18<Dzz$'H%% 599'AFFLLN4y5,.s4y)3t9%,,QVV4	5
 r   )N)MACHINE)__name__
__module____qualname__r   rB   rG   r   r   r   r   r   %   s    ) #'$5Lr   r   c                    t        ddd| gt        t              }|j                         \  }}|j                  dk7  rt	        d|z        t        j                  t        dt        |j                         t
        j                        }t        |      dk(  r#|d   j                         j                  d	      }ng }t        j                  dt        d
t        d|j                         t
        j                        }t        |      dk(  r4d	j                  |d   D cg c]  }|j                          c}      }||fS |j                         }||fS c c}w )Ncrontabz-l-ustdoutstderrr   zFailed to read the crontab: %sz(.*)   
z.*)r   r   communicate
returncodeRuntimeErrorrefindallr   r   decodeDOTALLlenr0   splitr,   )usernamepouterrmr   lotherss           r   fetch_crontabrd   _   s   y$h/TJA}}HC||q;cABB


,cjjlBIIFA
1v{A$**,$$T*


uc2CJJL"))LA
1v{qt4!AGGI45 7? 7? 5s    Ec                     t        d| d|gt        t              }|j                         \  }}|j                  dk7  rt	        d|z        y )NrM   rN   rO   r   zFailed to install crontab: %s)r   r   rT   rU   rV   )fnamer]   r^   _r`   s        r   install_crontabrh   p   sJ    y%x0dKA]]_FAs||q:S@AA r   c                   $     e Zd Zd Z fdZ xZS )gp_user_centrify_crontab_extc                    |D ]y  \  }}| j                   j                  |       t        |       |v r0t        | j                        \  }}|t        |          j                         D ]?  \  }}||v r|j                  |       | j                   j                  t        |       |       A t               5 }	t        |      dkD  rJ|	j                  dj                  |t        dj                  |      t        g      j                                n|	j                  |j                                |	j                          t!        |	j"                  | j                         d d d        | j                   j%                          | |D ]*  }
|
j&                  sd}| j                   j                  |
j"                         d}t(        j*                  j                  |
j&                  |      }t-        d| j.                  |      }|s~|j0                  D ]  }|j2                  |k(  s|j4                  j7                         s/t9        |j4                  j                               j;                         }| j                   j=                  t        |       |      }t        | j                        \  }}|r|j4                  |vr|j?                  |j4                         t               5 }	|	j                  dj                  |t        dj                  |      t        g      j                                |	j                          t!        |	j"                  | j                         d d d        | j                   jA                  t        |       ||j4                         | j                   j%                           - y # 1 sw Y   XxY w# 1 sw Y   gxY w)Nr   rS   r   zUSER/Registry.polroot)!gp_dbset_guidr&   rd   r]   r'   remover   r	   r[   r   r,   r   r   encodeflushrh   r   commitr)   r*   r+   r   r-   r   r.   r/   r0   r   	hexdigestretriever1   store)r   r6   r7   r8   r9   rc   r   r:   r"   r    r<   r=   r>   r+   r?   r@   old_vals                    r   rB   z1gp_user_centrify_crontab_ext.process_group_policyw   s   . 	 ND(JJ%4yH$"/">(0T(;(A(A(C <$Iu'u-JJ%%c$i;< () ;Q7|a'		65 $		' 2C+9 !::@&(D 0GGI#AFFDMM:; JJ!	 $ $ 	,C  P 

##CHH-.ww||C$5$5x@*64::tD!)) ,AyyG+$+AFFMMO$<$F$F$H	"&**"5"5c$i"K*7*F&!&&*?#NN1662!3!5 G !		65(,		'(:C3A )BBH&(!L !	 / F	G
 !JJ,,SY	166J

))+,	,; ;6G Gs   3B(N1A:N>1N;	>Oc                 &    t         |   |d      S )NUSER)rE   )superrG   )r   r<   	__class__s     r   rG   z!gp_user_centrify_crontab_ext.rsop   s    w|C|//r   )rI   rJ   rK   rB   rG   __classcell__)rz   s   @r   rj   rj   v   s    *,X0 0r   rj   )r*   rW   
subprocessr   r   samba.gp.gpclassr   r   r   hashlibr   tempfiler	   r   r   r   rd   rh   rj   r   r   r   <module>r      sN   "  " I I  '		8j/ 8t"B.0#: .0r   