
    g#                         S SK rS SKJr  S SKJr  S SKJr   S SKJ	r	  S SK
Jr  S SKJr  S rS	 rS
 r " S S\5      r " S S\5      rg! \ a     N.f = f)    N)
gp_inf_ext)system_session)
get_string)LdbError)SamDB)logc                 $    S[        U 5      S-  -  $ )N%d<   intvals    5/usr/lib/python3/dist-packages/samba/gp/gp_sec_ext.pymins_to_hoursr          3s8b=!!    c                 $    S[        U 5      S-  -  $ )Nr
      r   r   s    r   days_to_hoursr       r   r   c                 V    SnSnSnSn[        U 5      n [        X-  U-  U-  U-  * 5      $ )Nr   r   i )r   str)r   secondsminuteshourssam_adds        r   days2rel_nttimer   #   s>    GGEG
c(C(507:;<<r   c                   >    \ rS rSrSSSS.rS rS rS rS	 rS
 r	Sr
g)
gp_krb_ext+   kdc:user_ticket_lifetimekdc:service_ticket_lifetimekdc:renewal_lifetime)MaxTicketAgeMaxServiceAgeMaxRenewAgec           	      *   U R                   R                  S5      S:w  a  g SnU H  u  pEU R                  R                  U5        UR	                  5        Hu  nU[        U 5      :X  d  M  XV   R                  5        HK  u  pxU R                  Xx5        U R                  R                  Xg5        U R                  R                  5         MM     Mw     M     U GH;  n	U	R                  (       d  M  U R                  R                  U	R                  5        [        R                  R                  U	R                  U5      n
U R                  U
5      nU(       d  M  UR!                  5        H  nU[        U 5      :X  d  M  UR                  U5       H~  u  pU["        R$                  ;  a  M  ["        R$                  U   nU R'                  5       R                  U5      nU R                  X}" U5      5        U R                  R                  5         M     M     GM>     g Nzserver rolez"active directory domain controllerz0MACHINE/Microsoft/Windows NT/SecEdit/GptTmpl.inf)lpgetgp_dbset_guidkeysr   itemsset_kdc_tdbdeletecommitfile_sys_pathnameospathjoinparsesectionsr   	apply_mapmapper)selfdeleted_gpo_listchanged_gpo_listinf_fileguidsettingssectionattvaluegpor5   inf_confkey
value_funcs                 r   process_group_policygp_krb_ext.process_group_policy/   s   77;;}%)MME.NDJJ%#==?c$i'&.&7&=&=&?
((4

))'7

))+ '@ + / $C   

##CHH-ww||C$5$5x@::d+'002G#d)+*2..*AJC"**>*>> (","6"6s";C)-):):3)?J ,,S*U2CD JJ--/ +B  3 $r   c                    U R                   R                  R                  U5      n[        R                  " U< SU< SU< 35        Ubh  U R                   R                  R                  U[        U5      5        U R                   R                  [        U 5      UU(       a  [        U5      OS 5        g U R                   R                  R                  U5        U R                   R                  [        U 5      U5        g )Nz was changed from  to )	r+   gpostorer*   r   infostorer   r   r0   r;   	attributer   old_vals       r   r/   gp_krb_ext.set_kdc_tdbM   s    **%%)))49gsKL?JJ%%iCAJJSY	 4>g3F$(* JJ&&y1JJc$i3r   c                      S [         [        S.$ )Nc                     U $ N r   s    r   <lambda>#gp_krb_ext.mapper.<locals>.<lambda>Y   s    r   )r!   r"   r#   )r   r   r;   s    r   r:   gp_krb_ext.mapperX   s    ,;/<(5 	r   c                     g)NzKerberos PolicyrV   rY   s    r   __str__gp_krb_ext.__str__^   s     r   c                    0 nU R                   R                  S5      S:w  a  U$ SnUR                  (       a  [        R                  R                  UR                  U5      nU R                  U5      nU(       d  U$ [        U 5      UR                  5       ;   aY  [        U 5      nUR                  U5       VVs0 s H-  u  px[        R                  R                  U5      (       d  M+  Xx_M/     snnX&'   U$ s  snnf r(   )r)   r*   r2   r4   r5   r6   r7   r   r8   r.   r   r9   	r;   rD   outputr>   r5   rE   rA   kvs	            r   rsopgp_krb_ext.rsopa   s    77;;}%)MMME77<< 1 18<Dzz$'H4yH--//d)4<NN74K #F4KDA)3)=)=)A)A!)D $(144K #F#F   7*C3%C3rV   N)__name__
__module____qualname____firstlineno__r9   rH   r/   r:   r\   rc   __static_attributes__rV   r   r   r   r   +   s+    #=#@#9<I0<	4!r   r   c                   \    \ rS rSrSrS rSSSSS.rS	 rS
 rS r	S r
S rS rS rS rSrg)gp_access_extr   zThis class takes the .inf file parameter (essentially a GPO file mapped
to a GUID), hashmaps it to the Samba parameter, which then uses an ldb
object to update the parameter to Samba4. Not registry oriented whatsoever.
c                      [        U R                  R                  5       [        5       U R                  U R                  S9U l        g ! [        [        4 a    [        S5      ef = f)N)session_infocredentialsr)   z/Failed to load SamDB for assigning Group Policy)	r   r)   	samdb_urlr   credsldb	NameErrorr   	ExceptionrY   s    r   load_ldbgp_access_ext.load_ldbx   s[    	OTWW..0*8*:)- $)DH 8$ 	OMNN	Os   AA A$	minPwdAge	maxPwdAgeminPwdLengthpwdProperties)MinimumPasswordAgeMaximumPasswordAgeMinimumPasswordLengthPasswordComplexityc           	      l   U R                   R                  S5      S:w  a  g U R                  5         SnU H  u  pEU R                  R	                  U5        UR                  5        H  nU[        U 5      :X  d  M  XV   R                  5        Hc  u  pxU R                  5       R                  U5      u  pU	" Xx5        U R                  R                  Xg5        U R                  R                  5         Me     M     M     U GH4  nUR                  (       d  M  U R                  R	                  UR                  5        [        R                  R                  UR                  U5      nU R!                  U5      nU(       d  M  UR#                  5        H  nU[        U 5      :X  d  M  UR                  U5       Hw  u  pU[$        R&                  ;  a  M  [$        R&                  U   nU R                  5       R                  U5      u  pU	" X" U5      5        U R                  R                  5         My     M     GM7     g r(   )r)   r*   rv   r+   r,   r-   r   r.   r:   r0   r1   r2   r3   r4   r5   r6   r7   r8   rl   r9   )r;   r<   r=   r>   r?   r@   rA   rB   rC   update_samba_rD   r5   rE   rF   rG   s                   r   rH   "gp_access_ext.process_group_policy   s   77;;}%)MME.NDJJ%#==?c$i'&.&7&=&=&?
*.++-*;*;C*@$S0

))'7

))+	 '@ + / $C   

##CHH-ww||C$5$5x@::d+'002G#d)+*2..*AJC"-*A*AA ("/"9"9#">C9=9J9J39O6\(j.?@ JJ--/ +B  3 $r   c                    U R                   R                  5       n[        R                  " SU< SU< 35        U R                  R                  [        U 5      U[        U5      5        U R                   R                  U5        g )Nz*KDC Minimum Password age was changed from rK   )rs   get_minPwdAger   rM   r+   rN   r   set_minPwdAgerO   s       r   ch_minPwdAgegp_access_ext.ch_minPwdAge   Z    ((((*S" 	#

TIs7|<s#r   c                    U R                   R                  5       n[        R                  " SU< SU< 35        U R                  R                  [        U 5      U[        U5      5        U R                   R                  U5        g )Nz*KDC Maximum Password age was changed from rK   )rs   get_maxPwdAger   rM   r+   rN   r   set_maxPwdAgerO   s       r   ch_maxPwdAgegp_access_ext.ch_maxPwdAge   r   r   c                    U R                   R                  5       n[        R                  " SU< SU< 35        U R                  R                  [        U 5      U[        U5      5        U R                   R                  U5        g )Nz-KDC Minimum Password length was changed from rK   )rs   get_minPwdLengthr   rM   r+   rN   r   set_minPwdLengthrO   s       r   ch_minPwdLengthgp_access_ext.ch_minPwdLength   sZ    ((++-S" 	#

TIs7|<!!#&r   c                    U R                   R                  5       n[        R                  " SU< SU< 35        U R                  R                  [        U 5      U[        U5      5        U R                   R                  U5        g )Nz*KDC Password Properties were changed from rK   )rs   get_pwdPropertiesr   rM   r+   rN   r   set_pwdPropertiesrO   s       r   ch_pwdPropertiesgp_access_ext.ch_pwdProperties   sZ    ((,,.c# 	$

TIs7|<""3'r   c                     U R                   [        4U R                  [        4U R                  S 4U R                  S 4S.$ )zldap value : samba setterc                     U $ rU   rV   r   s    r   rW   &gp_access_ext.mapper.<locals>.<lambda>   s    3r   c                     U $ rU   rV   r   s    r   rW   r      s    Sr   )rx   ry   rz   r{   )r   r   r   r   r   rY   s    r   r:   gp_access_ext.mapper   sF    "//A"//A "&!5!5 G"&"7"7!I 	r   c                     g)NzSystem AccessrV   rY   s    r   r\   gp_access_ext.__str__   s    r   c                    0 nU R                   R                  S5      S:w  a  U$ SnUR                  (       a  [        R                  R                  UR                  U5      nU R                  U5      nU(       d  U$ [        U 5      UR                  5       ;   aY  [        U 5      nUR                  U5       VVs0 s H-  u  px[        R                  R                  U5      (       d  M+  Xx_M/     snnX&'   U$ s  snnf r(   )r)   r*   r2   r4   r5   r6   r7   r   r8   r.   rl   r9   r_   s	            r   rc   gp_access_ext.rsop   s    77;;}%)MMME77<< 1 18<Dzz$'H4yH--//d)4<NN74K #I4KDA)6)@)@)D)DQ)G $(144K #I#Ire   )rs   N)rf   rg   rh   ri   __doc__rv   r9   rH   r   r   r   r   r:   r\   rc   rj   rV   r   r   rl   rl   r   sK    
O -8,7,:,;>I0@$$'(	r   rl   )os.pathr4   samba.gp.gpclassr   
samba.authr   samba.commonr   rs   r   samba.samdbr   ImportErrorsamba.gp.util.loggingr   r   r   r   r   rl   rV   r   r   <module>r      sd   $  ' % #	! &""=D DNkJ ks  		s   A
 
AA